【发布时间】:2014-10-06 23:03:09
【问题描述】:
我刚面试,面试官问了我以下问题:
从一个字符串(英文单词)数组中,编写一个函数,返回所有包含一个字符的单词。
我最初提出了类似的建议:
public static List<String> find(String[] array, char c) {
if(null == array || array.length == 0)
return null;
List<String> res = new ArrayList<String>();
for(String s : array) {
if(s.indexOf(c) > -1) {
res.add(s);
}
}
return res;
}
然后,面试官问我优化我的解决方案,可以使用什么样的数据结构。 (她说我的解决方案是蛮力)
我仍然不知道如何优化它。有任何想法吗?
【问题讨论】:
-
你能在字符上使用 contains 吗?不是 indexOf 吗?
-
@Leo 你是对的,我的错。
-
np。但包含不会使其暴力。我也很想知道这个问题的答案。她希望你使用索引吗? :-)
-
我唯一的评论是我宁愿看到一个空数组返回而不是 null。但那是tbh的意见。我看不出如何改进
-
@saadtaame 使用 java 8 你可以在一行中完成(即更少的代码),但这只是一个“编码”优化假设“更少的代码”是可取的(我同意)。执行速度虽然相似。我认为 Lashane 的答案可能是她想要的,但这可能被认为是“糟糕的编码”,因为它是正确行为所不需要的优化,而且问题中没有任何内容表明这种方法会在具有不同搜索字符的相同字符串数组。如果这是要求,面试官应该明确说明。