如果两个英语单词只包含相同的字母,则它们是相似的。例如,food 和 good 不相似,但 dog 和 good 相似。(如果 A 与 B 相似,则 A 中的所有字母都包含在 B 中,B 中的所有字母都包含在 A 中。)
给定一个单词 W 和一个单词列表 L,找到 L 中与 W 相似的所有单词。将单词计数打印到标准输出。
例子:
输入(标准输入):
love velo low vole lovee volvell lowly lower lover levo loved love lovee lowe lowes lovey lowan lowa evolve loves volvelle lowed love
输出(标准输出):
14
解释:
L中与love相近的词是 velo vole lovee volvell lover levo loved love lovee lovey evolve loves volvelle love
最多14.
所以我目前的解决方案如下:
public static void main(String[] args) {
String[] arr = new String[]{"velo", "low", "vole", "lovee", "volvell", "lowly", "lower", "lover", "levo", "loved", "love",
"lovee", "lowe", "lowes", "lovey", "lowan", "lowa", "evolve", "loves", "volvelle", "lowed", "love"};
String s = "love";
int result = 0;
Pattern p = Pattern.compile(buildPattern(s));
for (String val : arr) {
if (p.matcher(val).find()) result++;
}
System.out.println(result);
}
private static String buildPattern(String s) {
String pattern = "^";
for (int i = 0; i < s.length(); i++) {
pattern += "(?=.*" + s.charAt(i) + ")";
}
return pattern;
}
我想知道我的简单代码是否有任何改进。
Aho-Corasick 是否适用解决方案?
凤凰求蛊
杨魅力
HUH函数
慕桂英546537
扬帆大鱼
相关分类