1 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
考慮對(duì)給定問題使用兩點(diǎn)方法。
將 A 中每個(gè)字符的計(jì)數(shù)存儲(chǔ)在哈希映射中 -
HashMapA
當(dāng)我們遍歷數(shù)組 B 時(shí),維護(hù)兩個(gè)指針,開始和結(jié)束。
維護(hù)另一個(gè)哈希映射以存儲(chǔ)出現(xiàn)在數(shù)組 B 中的 [start, end] 范圍內(nèi)的字符數(shù) -
HashMapB
共享 ideone 鏈接:https ://ideone.com/vLmaxL
for(char c : A) HashMapA[c]++;
start = 0
for(int end = 0; end < B.length(); end++) {
char c = B[end];
HashMapB[c]++;
while(HashMapB[c] > HashMapA[c] && start <= end) {
HashMapB[ B[start] ]--;
start++;
}
if(end - start + 1 == A.length())
return true;
}
return false;
添加回答
舉報(bào)