给定一个字符串,判断该字符串中是否包含某个子串.如果包含,求出子串的所有出现位置. 要求:从键盘输入两个字符串,第一个是给定的字符串,第二个是子串。
输入
abcd23abc34bcd bc
输出
1 7 11
难度:一般
输入示例
1234efaiseeftt ef
输出示例
4 10
代码展示
import java.util.Scanner;
public class A4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// System.out.print("请输入一个字符串:");
String str1 = sc.next();
// System.out.print("请输入要查询的子串:");
String str2 = sc.next();
int head = 0;
while (true) {
//indexOf——返回指定字符第一次出现的字符串内的索引
int i = str1.indexOf(str2, head);//从head位置开始,检索str1中是否存在str2
//找不到返回-1,循环结束
if (i == -1) {
break;
}
//打印找到的值(下标)
System.out.print(i + " ");
//第一次head=0,从0开始找,之后head变为下标i+要找字符串的长度
//应该从这里开始查找该子串,不加长度会出问题的!
head = i + str2.length();
}
}
}
输出展示
abcd23abc34bcd bc
1 7 11