leetcode 500 Keyboard Row Add to List

    xiaoxiao2021-03-25  169

    Problem: 给一个数组,判断给定的单词中的每个字母能否都在美式键盘的同一行? Solution: 创建三个数组,然后对每个单词中的字母查找是否在同一个数组当中。 note: 在集合中查找是否存在最高效的办法是使用hash表,而不是并查集。

    class Solution { public: vector<string> findWords(vector<string>& words) { unordered_set<char> row1 {'q', 'w', 'e', 'r', 't', 'y','u', 'i', 'o', 'p'}; unordered_set<char> row2 {'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'}; unordered_set<char> row3 { 'z', 'x', 'c', 'v', 'b' ,'n', 'm'}; vector<unordered_set<char>> rows {row1, row2, row3}; vector<string> validWords; for(int i=0; i<words.size(); ++i){ int row=0; for(int k=0; k<3; ++k){ if(rows[k].count((char)tolower(words[i][0])) > 0) row = k; } for(int j=0; j<words[i].size(); ++j){ if(rows[row].count((char)tolower(words[i][j])) == 0) break; if(j == words[i].size()-1) validWords.push_back(words[i]); } } return validWords; } };
    转载请注明原文地址: https://ju.6miu.com/read-1410.html

    最新回复(0)