字串的最小視窗問題

2021-07-11 17:54:11 字數 971 閱讀 8888

給定兩個字串t和s,找出在s中包含字串t的最小子字串,要求時間複雜度為o(n)。

如果不存在最小視窗,則返回」「;

例如,s ="adobecodebanc"

t ="abc"

返回的最小視窗是"banc".

實驗的**如下所示:

#include#include#includeusing namespace std;

string minwindow(string &s, string &t)

vectortobefind(128, 0);

vectorfound(128, 0);

for (int i = 0; i != tlen; ++i)

int count = tlen;

int first = 0;

int last = 0;

int minfirst = 0;

int minlast = 0;

int minlength = int_max;

found[s[0]]++;

if (found[s[0]] <= tobefind[s[0]])//先比較第乙個字元是為了處理t為單個字元的特例

while (true)

int length = last - first + 1;

if (length < minlength)

}if (last < slen)

}else

}if (minlength == int_max)

return s.substr(minfirst, minlength);

}int main()

實驗結果如下所示:

4 滑動視窗解決字串問題

解題 思路 使用兩個輔助vector,乙個記錄1的位置v1,乙個記錄某個1的前面0的數量v2,用乙個長度為k的視窗在v1上滑動,滿足條件的子串的數量與視窗首尾位置對應的v2記錄的0的數量相關,將每乙個視窗的結果相加即可。結果應該設定成long long型別,有乙個測試用例有很多0。include u...

字串問題 回文最小分割數

題目 給定乙個字串str,返回把str全部切成回文子串的最小分割數。舉例 str aba str本身就是回文串,返回0.str acdcdcdad 最少需要切兩次變成3個回文子串,所以返回2.基本思路 本題是乙個經典的動態規劃的題目。定義動態規劃陣列dp,dp i 的含義是子串str 0 i 至少需...

字串問題 字串的統計字串

題目 給定乙個字串str,返回str的統計字串。例如,aaabbadddffc 的統計字串為 a 3 b 2 1 d 3 f 2 c 1 補充題目 給定乙個字串的統計字串cstr,再給定乙個整數index,返回cstr所代表的原始字串上第index個字元。例如,a 1 b 100 所代表的原始字串上...