第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

用于查找具有雙精度和子集的子集的有效算法

用于查找具有雙精度和子集的子集的有效算法

我有兩個(gè)帶字母的數(shù)組。我想知道數(shù)組 A 是否包含在數(shù)組 B 中,如下所示:A 中的字母必須在數(shù)組 B 中彼此相鄰出現(xiàn),但不必以與數(shù)組 A 中相同的順序出現(xiàn)。可以接受的示例A = abcd B = hbadcgA = aabc B = abcag不被接受的例子A = aabcd B = adcbgaA = abcd B = abcdg我可以做的是檢查 A 的每個(gè)變體是否是 B 中的子字符串。但我正在尋找更好的方法
查看完整描述

1 回答

?
GCT1015

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;


查看完整回答
反對(duì) 回復(fù) 2021-11-03
  • 1 回答
  • 0 關(guān)注
  • 164 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)