用java编写标题:寻找相同子串 | 时间限制:1秒 | 内存限制:65536K | 语言限制:不限 给你两个字符串 t 和 p ,要求从 t 中找到一个和 p 相同的连续子串,并输出该字串第一个字符的下标。 输入描述: 输入文件包括两行,分别表示字符串 t 和 p ,保证 t 的长度不小于 p ,且 t 的长度不超过1000000,p 的长度不超过10000。 输出描述: 如果能从 t 中找到一个和 p 相等的连续子串,则输出该子串第一个字符在t中的下标(下标从左到右依次为1,2,3,…);如果不能则输出”No”;如果含有多个这样的子串,则输出第一个字符下标最小的。 示例1 输入 AVERDXIVYERDIAN RDXI 输出 4
时间: 2023-05-19 22:00:36 浏览: 90
java笔试题回文子串-nb_whiteboarding:WhiteboardingAndAlgorithmsWorkshop-周三版的示例源
可以使用暴力匹配算法,时间复杂度为O(n*m),其中n为t的长度,m为p的长度。具体实现如下:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String t = sc.nextLine();
String p = sc.nextLine();
int index = -1; // 记录子串第一个字符的下标
for (int i = 0; i <= t.length() - p.length(); i++) {
boolean flag = true; // 标记是否匹配成功
for (int j = 0; j < p.length(); j++) {
if (t.charAt(i+j) != p.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
index = i + 1;
break;
}
}
if (index == -1) {
System.out.println("No");
} else {
System.out.println(index);
}
}
}
对于输入样例 AVERDXIVYERDIAN 和 RDXI,程序输出结果为 4。
阅读全文