В настоящее время я выполняю задачу кодирования, которая гласит:
Учитывая список слов, верните слова, которые можно набирать, используя буквы алфавита, только на одной строке американской клавиатуры, как на рисунке ниже (это изображение QWERTY-клавиатуры).
Пример:
Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
Что я сделал, чтобы решить эту проблему, так это , чтобы написать цикл for, а затем выполнить операторы, которые заменяют все строки (например, QWERTY) на ""
, и если длина этого больше 1, тогда вы не можете набрать это слово в один ряд. Я получаю почти правильный вывод, но мой массив содержит нулевые элементы.
Мой вывод:
[null,"Alaska","Dad",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;
}
}