编写一个Java函数,在给定的字符串中查找子串并返回其出现的位置
发布时间:2023-06-30 23:58:25
以下是一个在Java中实现的函数,用于在给定的字符串中查找子串并返回其出现的位置:
public static List<Integer> findSubstring(String str, String subStr) {
List<Integer> positions = new ArrayList<>();
int strLen = str.length();
int subStrLen = subStr.length();
if (strLen < subStrLen) {
return positions;
}
for (int i = 0; i <= strLen - subStrLen; i++) {
boolean found = true;
for (int j = 0; j < subStrLen; j++) {
if (str.charAt(i + j) != subStr.charAt(j)) {
found = false;
break;
}
}
if (found) {
positions.add(i);
}
}
return positions;
}
这个函数接收两个参数:str是要搜索的字符串,subStr是要查找的子串。返回值是一个整数列表,包含了子串在字符串中出现的所有位置。
函数首先检查输入字符串的长度,如果字符串的长度小于子串的长度,则直接返回空列表,因为无法在其中找到子串。
然后,函数使用两个嵌套的循环遍历字符串。外部循环用于遍历字符串中的每个字符,内部循环用于与子串进行比较。如果在内部循环中找到了一个不匹配的字符,则将found标记设置为false,并退出内部循环。如果内部循环执行完毕,且所有字符都匹配,则将当前位置i添加到结果列表中。
最后,函数返回结果列表,其中包含了子串在字符串中出现的所有位置。
使用示例:
String str = "abcabcabcd"; String subStr = "abc"; List<Integer> positions = findSubstring(str, subStr); System.out.println(positions); // 输出 [0, 3, 6]
在上述示例中,函数将在字符串"abcabcabcd"中查找子串"abc",并返回子串出现的位置,即0、3和6。
