任意给定一个s字符串和一个n字符串,在s字符串中找出n字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1(需要给出多个测试用例,证明算法的正确性)。
时间: 2024-02-19 14:59:08 浏览: 96
好的,这里给出一个基于Java的通用实现算法,可以用来解决任意给定的`s`字符串和`n`字符串的问题。
```
public class FindStringIndex {
public static int findIndex(String s, String n) {
if (s == null || n == null || s.length() < n.length()) {
return -1;
}
for (int i = 0; i <= s.length() - n.length(); i++) {
int j = 0;
while (j < n.length() && s.charAt(i + j) == n.charAt(j)) {
j++;
}
if (j == n.length()) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
String s1 = "hello world";
String n1 = "world";
int index1 = findIndex(s1, n1);
System.out.println(index1); // 6
String s2 = "hello world";
String n2 = "Java";
int index2 = findIndex(s2, n2);
System.out.println(index2); // -1
String s3 = "This is a test string";
String n3 = "test";
int index3 = findIndex(s3, n3);
System.out.println(index3); // 10
String s4 = "abcdefg";
String n4 = "cde";
int index4 = findIndex(s4, n4);
System.out.println(index4); // 2
String s5 = "123456789";
String n5 = "89";
int index5 = findIndex(s5, n5);
System.out.println(index5); // 7
}
}
```
上述代码中,`findIndex`方法接受两个字符串作为参数,分别表示原始字符串`s`和要查找的字符串`n`。首先判断`s`和`n`是否为空,或者`s`的长度小于`n`的长度,如果是,则返回-1。然后使用一个循环遍历`s`字符串,每次从`s`字符串中取出与`n`长度相同的子串进行比较。使用一个内部循环,遍历子串中的每个字符,如果字符匹配,则继续向后比较;否则,退出内部循环,进行下一次比较。如果内部循环结束后,匹配的字符数等于`n`的长度,则说明找到了匹配的子串,返回子串在`s`字符串中的起始位置;否则,继续下一轮循环。如果循环结束后仍未找到,则返回-1。
通过在`main`方法中给出不同的测试用例,可以证明算法的正确性。
阅读全文