java - 检查一个单词是否是另一个单词的子字谜 (Java)

标签 java anagram

“未售出”和“筒仓”这两个词是“阴险地”一词的子字谜。也就是说,它们只能使用“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/

相关文章:

java - Appengine - 隐藏文件夹的部署

python - 如何检查两个字符串是否是彼此的字谜?

Javascript - 查找字谜的更好解决方案 - 时间复杂度 O (n log n)

java - Hibernate如何以2位小数写Detachedcriteria?

java - 从 Java 打印失败并显示 'pstopdffilter/pstocupsraster failed with err number -31000'

algorithm - 根据字符集对单词进行聚类

c - 寻找字谜

java - 使用 Java 8 搜索字谜

java - 在 Java 中将用户定义的对象添加到 ArrayList

java - 如何使用和在正则表达式中匹配此类字符串?