基于java的给定一个s字符串和一个n字符串,在s字符串中找出n字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1(需要给出多个测试用例,证明算法的正确性)。
时间: 2024-02-22 11:56:51 浏览: 83
Java基础编程:输入n个数字,后排序
好的,这是一个经典的字符串匹配问题。我可以给出一个基于暴力匹配的算法:
```java
public static int findSubstring(String s, String n) {
int sLen = s.length();
int nLen = n.length();
for (int i = 0; i <= sLen - nLen; i++) {
int j;
for (j = 0; j < nLen; j++) {
if (s.charAt(i + j) != n.charAt(j)) {
break;
}
}
if (j == nLen) {
return i;
}
}
return -1;
}
```
这个算法的时间复杂度是O(m*n),其中m是s字符串的长度,n是n字符串的长度。在最坏情况下,需要比较m*n次。但是,当n字符串的长度比较小的时候,这个算法是比较快的。
下面是一些测试用例,证明算法的正确性:
```java
public static void main(String[] args) {
String s = "hello world";
String n1 = "world";
String n2 = "llo";
String n3 = "abc";
System.out.println(findSubstring(s, n1)); // 输出6
System.out.println(findSubstring(s, n2)); // 输出2
System.out.println(findSubstring(s, n3)); // 输出-1
}
```
以上测试用例中,第一个测试用例中,n1字符串出现在s字符串中的位置是6;第二个测试用例中,n2字符串出现在s字符串中的位置是2;第三个测试用例中,n3字符串不存在于s字符串中,返回-1。
阅读全文