说一下对楼主思路的理解主要有三点: 弄清楚T中的每一个字符会和S中哪些位置的字符比较: 结合楼主的图很容易知道:T[i]会与S[i]~S[i+|S|-|T|]比较,i取0~|T|-1 怎么计算T[i]对答案的贡献 因为是计算距离,并且字符只会是'a'或者'b',所以T[i]对答案的贡献是 T[i] == 'a' ? cnt_b : cnt_a; 其中,cnt_a,cnt_b是S[i]~S[i+|S|-|T|]中字符'a'和'b'的个数 T[i+1]对答案的贡献与T[i]的递推关系 由第一点知道T[i+1]会与S[i+1]~S[i+1+|S|-|T|]比较,相较T[i]时的S[i]~S[i+|S|-|T|],少掉了第一个字符S[i],多了末尾的S[i+1+|S|-|T|],所以T[i+1]时只需要在T[i]统计的基础上,考虑减掉S[i]和加上S[i+1+|S|-|T|],也就是 S[i] == 'a' ? --cnt_a : --cnt_b; S[i + |S| - |T| + 1] == 'a' ? ++cnt_a : ++cnt_b; T[i+1]对答案的贡献同T[i]时的计算方法
点赞 1

相关推荐

A_SOUL_Off...:疑似加班加出幻觉了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务