一句话总结:昨天看错题了,今天的才是栈和队列才对;另外KMP有点抽象了。
原题链接: 28 找出字符串中的第一个匹配项的下标
只会暴力匹配,KMP算法看不懂一点。
class Solution {
public int strStr(String haystack, String needle) {
int n = haystack.length(), m = needle.length();
int ans = 0;
for (int i = 0; i <= n - m; i++) {
boolean flag = true;
int start = i;
for (int j = 0; j < m; j++) {
if (haystack.charAt(start) != needle.charAt(j)) {
flag = false;
break;
}
start++;
}
if (flag) return i;
}
return -1;
}
}
原题链接: 重复的子字符串
还是只会暴力搜索。另外看到s由小写字母组成怎么就有种开一个长为26的数组的冲动呢。。。
class Solution {
public boolean repeatedSubstringPattern(String s) {
int n = s.length();
for (int i = 1; i * 2 <= n; i++) {
if (n % i == 0) {
boolean flag = true;
for (int j = i; j < n; j++) {
if (s.charAt(j) != s.charAt(j - i)) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
}
return false;
}
}