Longest Common Prefix


文字列配列が受信された場合は、配列内の要素をチェックし、共通の接頭辞を探します.
Input: strs = ["flower","flow","flight"]
Output: "fl"
Input: strs = ["dog","racecar","car"]
Output: ""
初めて問題を見た時は2階建てのforゲートでアプローチした方がいいと思っていたので、仕事はしていましたが、なかなか解決できず、結局グーグルの力を借りました.
次の方法はsetを用いてダブルドアで抽出した要素を繰り返し消去検査するアルゴリズムである.
setは、一意の値を保証するため、可能な方法です.
var longestCommonPrefix = function (strs) {
  let result = '';
  outer: for (let i = 0; i < strs[0].length; i++) {
    let set = new Set();
    let item = '';

    for (let j = 0; j < strs.length; j++) {
      item = strs[j][i];
      set.add(item);
    }

    if (set.size === 1) {
      result += item;
    } else {
      break outer;
    }
  }
  console.log(result);
  return result;
};
性能が悪すぎるので、strsを先にsortして、最初の要素と最後の要素のアルゴリズムだけをチェックして、これらの関数がこのように書かれていることに驚きました.私もなぜこのような考えがないのかと思いました.
var longestCommonPrefix = function(strs) {
    strs.sort();
    for(let i =0; i <= strs[0].length; i++){
        if(strs[strs.length -1][i] !== strs[0][i]){
            return strs[0].substring(0,i)
        }
    }
    return strs[0];
};