KeyBoard Row(#500)

编号 名称 等级
500 KeyBoard Row Easy

思路

他的要是是检查输入的字符串是否是键盘的同一行。首先想到的是正则匹配。匹配是否是同一行,不是的话 break。是的话一直匹配。匹配结束的时候计算匹配数是否和单词长度一样。如果一样,表示匹配成功。其中正则表达式不太会写,而且运用了一个集合转换为数组的方法。

代码

import java.util.regex.Pattern;
public class Solution {
    public String[] findWords(String[] words) {
        Set<String> st = new HashSet<>();
        String[] key = new String[]{"[qwertyuiopQWERTYUIOP]", "[ASDFGHJKLasdfghjkl]", "[zxcvbnmZXCVBNM]"};
        for (int i = 0; i < words.length; i++) {
            char[] c = words[i].toCharArray();
            int count = 0;
            for (int k = 0; k < key.length; k++) {
                for (int j = 0; j < c.length; j++) {
                    if (Pattern.matches(key[k], String.valueOf(c[j]))) {
                        count++;
                    } else {
                        break;
                    }
                }
            }
            if (count == c.length) {
                st.add(words[i]);
            }
        }
        String[] str = st.toArray(new String[st.size()]);
        return str;
    }
}