AIZU ONLINE JUDGE の教材を使って勉強していきます
行いたい操作や文法をまとめ、
実際にその文法を使ってAOJを解答した例を載せています
indexOfで部分文字列を検索
- indexOfメソッド
- 文字列に含まれる部分文字列を検索
- ヒット場合は、文字列のインデックス番号を返す(先頭0)
-
lastIndexOfメソッドは文字列の後ろから検索
- 最初に見つかった位置のインデックスを返す
public class Main {
public static void main(String[] args){
String str1 = "Penpineappleapplepen";
String str2 = "pineapple";
int result = str1.indexOf(str2);
if (result != -1) {
System.out.println(str2 + "発見!");
System.out.println(str2 + "が見つかった位置:" + result);
} else {
System.out.println(str2 + "は見つかりませんでした。。。");
}
}
}
pineapple発見!
pineappleが見つかった位置:3
indexOfで複数要素を検索
- 第2引数を指定して複数の要素を検索する
- indexOfメソッドの第2引数で検索開始位置指定
- 文字がヒットしたらその次のインデックスを第2引数に指定し、続きから残りの文字列を検索
import java.util.ArrayList;
import java.util.Arrays;
public class Main {
public static void main(String[] args){
String str1 = "Penpineappleapplepen";
int result;
for (int i = 0; i < str1.length(); i++) {
result = str1.indexOf("p", i);
if (result != -1) {
i = result;
System.out.println("pを " + result +" 番目に発見した!");
}
}
}
}
pを 3 番目に発見した!
pを 8 番目に発見した!
pを 9 番目に発見した!
pを 13 番目に発見した!
pを 14 番目に発見した!
pを 17 番目に発見した!
リング(ITP1-8)
図のようなリング状の文字列 s の任意の位置から、時計回りに連続した文字をいくつか選んで、文字列 p が作れるかを判定するプログラムを作成してください。
Input
1行目に文字列 s が与えられます。 2行目に文字列 p が与えられます。
Output
p が作れる場合は Yes と、作れない場合は No と1行に出力してください。
Constraints
- 1≤pの長さ≤sの長さ≤100
- 文字列は英小文字からなる
Sample Input 1
vanceknowledgetoad
advance
Sample Output 1
Yes
import java.util.Scanner;
public class Main {
public static void main(String[] args){
Scanner scan=new Scanner(System.in);
String s=scan.next();
String p=scan.next();
s+=s;
if(s.indexOf(p)>=0)System.out.println("Yes");
else System.out.println("No");
scan.close();
}
}