“未售出”和“筒仓”这两个词是“阴险地”一词的子字谜。也就是说,它们只能使用“insidely”中的字母来拼写。显然还有更多,这个概念是《澳大利亚人报》上发现的文字游戏的基础。
我正在尝试编写一个程序,它接受两个参数 - 一个单词,另一个可能是该单词的子字谜词,如果是,则返回 true。到目前为止,这就是我所得到的:
public boolean isAnswer(String word, String base)
ArrayList<Character> characters = new ArrayList<>();
for(char x : base.toCharArray)
{
characters.add(x)
}
for(char y : word.toCharArray)
{
if(characters.contains(x))
{
characters.remove(x)
}
else
{
return false;
}
return true;
}
它确实有效,但如果我循环遍历英语词典中的每个单词,这将极大地消耗内存力。如何在不创建 ArrayList 局部变量的情况下执行此操作?
最佳答案
如果您想让现有程序更好,请考虑使用SET而不是LIST,因为它会
- 消除角色集合中的重复添加内容,从而节省空间。
- 在下一个循环中为您节省一些迭代,从而节省时间。
编辑
但是,在其中一条评论指出的条件下,这种优化可能不起作用。
EX - 当base
只有“ab”并且单词
有“aab”
关于java - 检查一个单词是否是另一个单词的子字谜 (Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44819851/