對於大多數子字串問題,我們獲得乙個字串和需要尋找乙個符合條件的子字串。乙個通常的解法是使用hashmap來關聯兩個指標,接下來是模板:
思路:使用count作為匹配數
對於單個字串匹配問題,直接用乙個視窗滑動,右窗滑動並更改count值,使count值符合完全匹配條件;左窗滑動令count值不符合完全匹配條件,從而重新迭代程式,使視窗向右滑動。
同理,對於兩個字串匹配問題,先把p串初始化到map裡,然後用該map匹配s串。每次匹配成功則使count減一,直到count=0則完全匹配成功。
不過這模板也不一定都適合,比如最後的word串聯匹配就相似,但還是右差別,要學會靈活應用。
int findsubstring(strings)
while(endwhile(/*
counter condition */)
} /*如果是找最大串則在這裡更新 d*/}
return
d; }
3. longest substring without repeating characters
input: "abcabcbb"output: 3
explanation: the answer is
"abc"
, with the length of 3.
classsolution
return
d; }
};
159.longest substring with at most two distinct characters
給出eceba,則輸出ece的長度3
classsolutionlen = max(len,end-begin);
}returnlen;
}};
76. minimum window substring
string minwindow(string s, stringt)}return d==int_max? "":s.substr(head, d);
}
438. find all anagrams in a string
給出字串s和字串t,在s中找出包含t字母隨意排序的子字串
classsolution
}
return
res;
}};
30、substring with concatenation of all words
s="barfoothefoobarman"
words=["foo","bar"]
output:[0,9]
classsolution
if (count==m)
}else//如果視窗中沒找到str,則清空當前視窗curmap和匹配數,並移位到下乙個word
}curmap.clear();//遍歷完一次則清空curmap,以便進行下一次的遍歷;
}return
res;
}};
c語言 滑窗法 滑窗演算法
滑窗演算法 與跳窗演算法 類似,滑窗 moving window 演算法也是通過限制各個時間視窗內所能接 收的最大信元數對業務量進行控制。區別是,在滑窗演算法中,時間視窗不是向前跳,而 是每過乙個信元時間向前滑動一次,滑動的長度是乙個信元的時間。以下是幾種 upc演算法。信元一旦被 upc判定是違約...
c 滑窗快取
前言 在大資料時代,軟體系統需要具備處理海量資料的能力,同時也更加依賴於系統強大的儲存能力與資料響應能力。各種大資料的工具如雨後春筍般孕育而生,這對於系統來說是極大的利好。但在後端採用分布式 雲儲存和虛擬化等技術大刀闊斧地解決大部分儲存問題後,仍然不足以滿足所有的業務需求。對於以使用者為終點的軟體系...
資料探勘比賽之「滑窗法」
作為參加資料比賽已經有8個月的一名新人,最近閱讀了幾位kaggle maser開源的 發現其中有一些有意思的內容,記錄一些對於這些問題的思考。一 問題描述 題目中涉及到嚴格的時間概念,例如 未來n天的流量 銷售等 未來n天內的使用者 物件對 使用者 商品等 的問題等,都可以利用滑窗法解決。諸如類似形...