プログラマー英語ドラゴンボール(level 2)


私の解答(解答時間:19分)

function solution(n, words) {
    if (words[0].length === 1) return [1,1];
    let map = new Map();
    map.set(words[0],1);
    for (let i = 1; i < words.length; i++) {
        if ((words[i-1][words[i-1].length-1] !== words[i][0]) || words[i].length === 1 || map.has(words[i])) {
            let p1 = (i+1) % n === 0 ? n : (i+1)%n;
            let p2 = Math.floor((i)/n)+1;
            return [p1, p2];
        } else {
            map.set(words[i], 1);
        }
    }

    return [0,0];
}
マッピングを作成し、単語を更新するたびに保存します.巡回wordsは,条件を満たさなければ直ちに返す.そうでなければ地図に追加します.そしてfor文が終わると,自動的に正しい語が続くと判断し,[0,0]を返す.