java - 如何删除数组中的“null”元素?
问题描述
我目前正在做一个编码挑战,其中指出:
给定一个单词列表,返回只能在美式键盘的一行中使用字母输入的单词,如下图所示(这是 QWERTY 键盘的图像)。
例子:
Input: ["Hello", "Alaska", "Dad", "Peace"]
Output: ["Alaska", "Dad"]
我为解决这个问题所做的工作是编写一个 for 循环,然后执行 if 语句将所有行(如 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;
}
}
解决方案
使用这一个班轮:
Arrays.stream(result).filter(Objects::nonNull).toArray(String[]::new)
过滤数组并获取所有非空对象。不要忘记将流转换回数组。
推荐阅读
- apache-kafka - Kafka 生产者和消费者在单独的 EC2 实例中
- amazon-web-services - 如何更改 aws cli 中的默认配置文件变量?
- c++ - CString 结果?尝试分配包含俄语字符的 _variant_t.bstrVal 时
- android - Android Studio 更新后,Android 应用程序无法从转移到新设备安装
- c++ - Cuda 中的有效带宽
- macos - Mac 上的 Docker - OCI 运行时创建失败:mkdir 权限被拒绝
- telegram - 如何踢出电报机器人?
- python - Heroku postgresql 运算符不存在
- android - 无法在额外属性上获取属性 compileSdkVersion?
- workday-api - 来自 USER_ID 或电子邮件过滤器的工作日 get_worker