JavaScriptで重複のない部分文字列を検索する方法


まず、一つのアプローチとして、スライディングウィンドウという手法を使用することができます。以下に、この手法を使ったサンプルコードを示します。

function findLongestSubstring(str) {
  let longestSubstring = '';
  let currentSubstring = '';
  let charSet = new Set();
  for (let i = 0; i < str.length; i++) {
    let char = str[i];
    if (charSet.has(char)) {
      // 重複のない最長の部分文字列を更新する
      if (currentSubstring.length > longestSubstring.length) {
        longestSubstring = currentSubstring;
      }
// 重複があった文字以前の文字を削除する
      while (currentSubstring[0] !== char) {
        charSet.delete(currentSubstring[0]);
        currentSubstring = currentSubstring.slice(1);
      }
// 重複があった文字も削除する
      charSet.delete(char);
      currentSubstring = currentSubstring.slice(1);
    }
// 新しい文字を追加する
    charSet.add(char);
    currentSubstring += char;
  }
// 最後の部分文字列をチェックする
  if (currentSubstring.length > longestSubstring.length) {
    longestSubstring = currentSubstring;
  }
  return longestSubstring;
}
// 使用例
const inputString = 'abcbda';
const longestSubstring = findLongestSubstring(inputString);
console.log('最長の重複のない部分文字列:', longestSubstring);

上記のコードは、与えられた文字列内で重複のない最長の部分文字列を見つける関数 findLongestSubstring を実装しています。スライディングウィンドウのアイデアは、文字列を一つずつ見ていきながら、重複が発生した場合に適切に処理することです。

この方法を使えば、JavaScriptで重複のない部分文字列を見つけることができます。上記のコードを参考にして、独自の要件に合わせてカスタマイズしてください。