b_lc_统计只差一个字符的子串对数目(聪明的暴力 / 双指针)
给你两个字符串s和t ,请你找出s中的非空子串的数目,这些子串满足替换 一个不同字符 以后,是t串的子串。
思路:题意揣摩了许久后,发现是在s、t中找到只有一个不同字符的字符串对,直接暴力了
class Solution {
public:
int countSubstrings(string& s, string& t) {
int n=s.size(), m=t.size(), ans=0;
for (int i=0; i<n; i++)
for (int j=0; j<m; j++) {
int d=0;
for (int len=0; i+len<n && j+len<m; len++) {
if (s[i+len]!=t[j+len] && ++d>1) break; //如果以s[i]开头的子串和以t[j]开头的不能组成一对,那么往后的都不能组成一对
if (d==1) ans++;
}
}
return ans;
}
};
更优的做法是双指针: