脚本宝典收集整理的这篇文章主要介绍了1358. 包含所有三种字符的子字符串数目,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
题面:
题解:
双指针找区间即可。
代码:
class Solution { public: int numberOfSubstrings(string s) { int numa = 0,numb = 0,numc = 0,l = 0,r = 0; int n = s.size(); int ans=0; if(s[0] == 'a')numa++; if(s[0] == 'b')numb++; if(s[0] == 'c')numc++; while(r<n) { while(r+1<n&&!(numa&&numb&&numc)) { if(s[r+1] == 'a')numa++; if(s[r+1] == 'b')numb++; if(s[r+1] == 'c')numc++; r++; } if(numa&&numb&&numc) { // cout<<l<<" "<<r<<endl; ans += n-r; } else { break; } if(s[l] == 'a')numa--; if(s[l] == 'b')numb--; if(s[l] == 'c')numc--; l++; } return ans; } };
以上是脚本宝典为你收集整理的1358. 包含所有三种字符的子字符串数目全部内容,希望文章能够帮你解决1358. 包含所有三种字符的子字符串数目所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。