此題不評價,有點意思,我在次以兩種語言python 和c++,用兩種相反的思路寫,注意細節不同。
原題鏈接3258. 統計滿足 K 約束的子字符串數量 I - 力扣(LeetCode)
法一,c++,先統計出不符合的字符串數量
核心思路:
遍歷s字符串每個字母,再
按位與運算符?
?作用?:對整數的二進制位執行邏輯與操作
?規則?:同位置均為 1 時結果為 1,否則為 0
之后一段時間是符合的,之后會不符合,觸發while,此時統計不符合的子字符串的數量,之后再滑窗,減左處數字,加左邊下標,注意,此left下標也代表著不符合的字符串數量,初始為0,代表原本是沒有不符合的字符串的,只是越大越不滿足,最后用產生的總字符串數量減不符合,得到符合的數量
法二,python,直接統計符合的子字符串數量,這個有點抽象
此處,對于新人我來說有點抽象,我更建議自己以例二為例子模擬一遍,注意此處left,統計的也是不符合的子字符串的數量,但此處用的不是這個意思,他只是單純的表示左下標的滑窗位置,之后每次滑動會產生 i - left +1 個子字符串,為什么,原本未滿足while時,表示符合,此時 ans 加此會得到符合的子字符串數量,之后觸發while ,會產生從此處的 i,往前不斷延申的子字符串,數量也為?i - left +1,注意不要從前往后數,前面的子字符串在前一次已經統計了一次,會重復,