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;
    }
};

更优的做法是双指针:

posted @ 2020-11-01 09:45  童年の波鞋  阅读(97)  评论(0编辑  收藏  举报