public static List<Integer> findStringIndex(String origindiStr, String destStr){
//找到目标字符串首个字符在原字符串出现的索引。如目标字符串为"24",原字符串为"2333243", 找到"2"在原字符串中的索引[0, 4]
//根据索引找到所有目标长度的字符串。如目标字符串为"24"长度为2。原字符串为"2333243", 找到以2开头长度为2的字符串["23", "24"]
//将找到的字符串与原字符串进行匹配
//返回索引集合
int ori_length = origindiStr.length();
int dest_length = destStr.length();
ArrayList<Integer> firstCharIndexList = new ArrayList();// 存放目标字符串首个字符在原字符串中出现的索引
char dest_first_char = destStr.charAt(0); //字符串首个字符
for(int i = 0;i < origindiStr.length(); i++){
if(origindiStr.charAt(i) == dest_first_char){
firstCharIndexList.add(i);
}
}
ArrayList<Integer> strIndexList = new ArrayList(); //存放匹配的字符串出现的索引
for(Integer index : firstCharIndexList){
if(index+dest_length <= ori_length){
String subStr = origindiStr.substring(index, index+dest_length);
if(destStr.equals(subStr)){
strIndexList.add(index);
}
}
}
return strIndexList;
}
// 测试
String oriStr = "我是我不是我不不是";
String dest = "我不是";
System.out.println(findStringIndex(oriStr, dest)); //输出 [2]