28. 找出字符串中第一个匹配项的下标
题目链接:LeetCode
文章讲解:代码随想录
视频讲解:哔哩哔哩
编写语言:Java
完成状态:已完成
解题思路
- 本题是kmp算法的应用,想拓展一下的话可以一试,其他用暴力法也能过
代码
- 内置库函数
class Solution {
public int strStr(String haystack, String needle) {
if (haystack.contains(needle)) {
return haystack.indexOf(needle);
}
return -1;
}
}
- 暴力法
class Solution {
public int strStr(String haystack, String needle) {
int h_size = haystack.length();
int n_size = needle.length();
for (int i = 0; i + n_size <= h_size; i++) {
boolean flag = true;
for (int j = 0; j < n_size; j++) {
char h_char = haystack.charAt(i + j);
char n_char = needle.charAt(j);
if (h_char != n_char) {
flag = false;
break;
}
}
if (flag == true) {
return i;
}
}
return -1;
}
}
459. 重复的子字符串
题目链接:LeetCode
文章讲解:代码随想录
视频讲解:哔哩哔哩
编写语言:Java
完成状态:已完成
解题思路
- 将字符串扩充到s+s,删除首尾后,存在原来的字符串
代码
- 理清逻辑
class Solution {
public boolean repeatedSubstringPattern(String s) {
StringBuffer sb = new StringBuffer(s + s);
sb.delete(0, 1);
sb.delete(sb.toString().length() - 1, sb.toString().length());
String res = sb.toString();
if (res.contains(s)) {
return true;
}
return false;
}
}