本题要求实现一个字符串查找的简单函数。
我们将使用简单粗暴的搜索办法完成这个问题
首先我们定义一个search方法,
- 在
search
方法中,首先获取了字符串s
和子串t
的长度,分别用slen
和tlen
表示。 - 然后通过两个循环进行遍历:外层循环从
0
到slen - tlen
,内层循环用于逐个字符比较。 - 在内层循环中,对于每个位置
i
,都检查s
中从i
开始的连续tlen
个字符是否与t
相匹配。 - 如果匹配成功,则返回当前位置
i
,表示子串t
在字符串s
中的起始位置。
public static int search(String s, String t) {
int slen = s.length();
int tlen = t.length();
for (int i = 0; i <= slen - tlen; i++) {
boolean found = true;
for (int j = 0; j < tlen; j++) {
if (s.charAt(i + j) != t.charAt(j)) {
found = false;
break;
}
}
if (found) return i;
}
return -1;
}
接着编写main方法
- 调用
search
方法,在字符串s
中查找子串t
,并将结果赋值给变量pos
。 - 判断
pos
的值是否为-1
,如果不是,则说明找到了子串t
在字符串s
中的位置,将该位置打印出来;如果是-1
,则说明未找到,打印-1
。
总的代码如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String t = scanner.nextLine();
int pos = search(s, t);
if (pos != -1)
System.out.println(pos);
else
System.out.println("-1");
}
public static int search(String s, String t) {
int slen = s.length();
int tlen = t.length();
for (int i = 0; i <= slen - tlen; i++) {
boolean found = true;
for (int j = 0; j < tlen; j++) {
if (s.charAt(i + j) != t.charAt(j)) {
found = false;
break;
}
}
if (found) return i;
}
return -1;
}
}