3. 無重複字元的最長子串給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是示例 2:"abc",所以其
長度為 3。輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是示例 3:"b"
,所以其長度為 1。輸入:"pwwkew"輸出:3解釋:因為無重複字元的最長子串是"wke"
,所以其長度為 3。請注意,你的答案必須是子串的長度,
"pwke"
是乙個子串行,不是子串。
class solution
res = max(res, right - left);
}return res;
}};
30. 串聯所有單詞的子串給定乙個字串s和一些長度相同的單詞words。找出s中恰好可以由words中所有單詞串聯形成的子串的起始位置。
注意子串要與words中的單詞完全匹配,中間不能有其他字元,但不需要考慮words中單詞串聯的順序。
示例 1:
輸入:示例 2:s ="barfoothefoobarman",words =["foo","bar"]輸出:
[0,9]
解釋:從索引 0 和 9 開始的子串分別是 "barfoo" 和 "foobar" 。輸出的順序不重要, [9,0] 也是有效答案。
輸入:s ="wordgoodgoodgoodbestword",words =["word","good","best","word"]
輸出:
class solution
}while (right - left >= n * len)
string str = s.substr(left, len);
left += len;
if (need.count(str))
window[str]--;}}
}}
return res;
}};
76. 最小覆蓋子串給你乙個字串
s
、乙個字串t
。返回s
中涵蓋t
所有字元的最小子串。如果s
中不存在涵蓋t
所有字元的子串,則返回空字串""
。注意:如果
s
中存在這樣的子串,我們保證它是唯一的答案。示例 1:
輸入:s = "adobecodebanc", t = "abc"輸出:"banc"示例 2:輸入:s = "a", t = "a"輸出:"a"
class solution
}while (valid == need.size())
char d = s[left];
left++;
if (need.count(d))
window[d]--;}}
}return res;
}};
給定乙個含有 n 個正整數的陣列和乙個正整數 s ,找出該陣列中滿足其和 ≥ s 的長度最小的 連續 子陣列,並返回其長度。如果不存在符合條件的子陣列,返回 0。示例:輸入:s = 7, nums = [2,3,1,2,4,3]
輸出:2
解釋:子陣列 [4,3] 是該條件下的長度最小的子陣列。
高階:如果你已經完成了 o(n) 時間複雜度的解法, 請嘗試 o(n log n) 時間複雜度的解法。
class solution
}return res == nums.size() + 1 ? 0 : res;
}};
給定乙個字串 s 和乙個非空字串 p,找到 s 中所有是 p 的字母異位詞的子串,返回這些子串的起始索引。字串只包含小寫英文本母,並且字串 s 和 p 的長度都不超過 20100。
說明:字母異位詞指字母相同,但排列不同的字串。
不考慮答案輸出的順序。
示例 1:
輸入:s: "cbaebabacd" p: "abc"
輸出:[0, 6]
解釋:起始索引等於 0 的子串是 "cba", 它是 "abc" 的字母異位詞。
起始索引等於 6 的子串是 "bac", 它是 "abc" 的字母異位詞。
示例 2:
輸入:s: "abab" p: "ab"
輸出:[0, 1, 2]
解釋:起始索引等於 0 的子串是 "ab", 它是 "ab" 的字母異位詞。
起始索引等於 1 的子串是 "ba", 它是 "ab" 的字母異位詞。
起始索引等於 2 的子串是 "ab", 它是 "ab" 的字母異位詞。
class solution
}while (right - left >= p.size())
char d = s[left];
left++;
if (need.count(d))
window[d]--;}}
}return res;
}};
給定兩個字串 s1 和 s2,寫乙個函式來判斷 s2 是否包含 s1 的排列。換句話說,第乙個字串的排列之一是第二個字串的子串。
示例1:
輸入: s1 = "ab" s2 = "eidbaooo"
輸出: true
解釋: s2 包含 s1 的排列之一 ("ba").
示例2:
輸入: s1= "ab" s2 = "eidboaoo"
輸出: false
注意:輸入的字串只包含小寫字母
兩個字串的長度都在 [1, 10,000] 之間
class solution
}while (right - left >= t.size())
char d = s[left];
left++;
if (need.count(d))
window[d]--;}}
}return false;
}};
滑動視窗leetcode
給定乙個陣列 nums,有乙個大小為 k 的滑動視窗從陣列的最左側移動到陣列的最右側。你只可以看到在滑動視窗 k 內的數字。滑動視窗每次只向右移動一位。返回滑動視窗最大值。示例 輸入 nums 1,3,1,3,5,3,6,7 和 k 3輸出 3,3,5,5,6,7 解釋 滑動視窗的位置 最大值 1 ...
leetcode 滑動視窗
面試題57 ii.和為s的連續正數序列 題目 輸入乙個正整數 target 輸出所有和為 target 的連續正整數序列 至少含有兩個數 序列內的數字由小到大排列,不同序列按照首個數字從小到大排列。題解 摘自 什麼是滑動視窗 滑動視窗可以看成陣列中框起來的乙個部分。在一些陣列類題目中,我們可以用滑動...
leetcode 滑動視窗
滑動視窗可以套用模板 如果不是 left math.max int map.get ch 1,left 而是left int map.get ch 1 當指標到了第二個a時,因為 left map.get a 1,left會後退指向到第乙個a的下乙個下標,即1,所以得到錯誤結果 map只儲存子串中的...