我目前正在做一个编码挑战,其中指出:
给定一个单词列表,返回可以在美式键盘的一行上使用字母输入的单词,如下图所示(这是 QWERTY 键盘的图像)。
例子:
Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
我为解决这个问题所做的是编写一个 for 循环,然后执行替换所有行(如 QWERTY)的 if 语句""
如果它的长度大于 1,那么您就不能在一行中输入该单词。我得到的输出几乎是正确的,但我的数组包含空元素。
我的输出是:
[null,"Alaska","Dad",null]
如何返回一个不包含这些 null 元素的数组?为了完成这个挑战,我必须返回一个String[]
大批。我无法使用ArrayList
回来。
class Solution {
public String[] findWords(String[] words) {
String[] result = new String[words.length];
String row1 = "qwertyuiop";
String row2 = "asdfghjkl";
String row3 = "zxcvbnm";
for (int i = 0 ; i < words.length; i++) {
if (words[i].toLowerCase().replaceAll("[" + row1 + "]", "").length() == 0 ||
words[i].toLowerCase().replaceAll("[" + row2 + "]", "").length() == 0 ||
words[i].toLowerCase().replaceAll("[" + row3 + "]", "").length() == 0) {
if (words[i] != null) {
result[i] = words[i];
}
}
}
return result;
}
}