IF-すべてのアナックを検索


質問する
S文字列の中で1つのプログラムを編纂して、T文字列とSの部分文字列の個数を求めます.
どうぞ.図を認識するときに大文字と小文字を区別します.一部の文字列は連続文字列でなければなりません.

Input1Input2OutputbacaAacbaabc3
回答とレビュー
これは
  • 以前に解いたスライドウィンドウと海図の混合問題です.
  • によって与えられたs文字列において、各要素はt文字列の個数を有する要素のサブ配列を作成する.
  • サブ配列を使用してマッピングを作成し、文字列をキーとし、文字列の個数を値とします.
  • で作成されたばかりのmapを、一致したときにのみt個の数1を増加させるcount文字列と比較します.
  • コード#コード#
    const solution = (s, t) => {
      let count = 0;
    
      for (let i = 0; i < s.length; i++) {
        let target = s[i];
        let flag = true;
        for (let j = i + 1; j < i + t.length; j++) {
          target += s[j];
          if (target.length === t.length) {
            let targetMap = new Map();
            for (let str of target) {
              if (targetMap.has(str)) targetMap.set(str, targetMap.get(str) + 1);
              else targetMap.set(str, 1);
            }
    
            for (let char of t) {
              if (!targetMap.get(char) || targetMap.get(char) === 0) {
                flag = false;
                break;
              } else targetMap.set(char, targetMap.get(char) - 1);
            }
    
            if (flag) count++;
          }
        }
      }
      return count;
    };