java - 使用数组列表查找字谜

标签 java arraylist

我试图找出两个字符串是否是彼此的变位词:

void anagram(String a, String b) {
    List<Character> bcopy = new ArrayList<Character>();

    for (int i = 0; i < b.length(); i++)
        bcopy.add(b.charAt(i));
    if (b.length() == 0 || a.length() == 0) {
        System.out.println("Exit");
    } else {
        for (int i = 0; i < a.length(); i++) {
            char temp = a.charAt(i);
            if (bcopy.contains(temp)) {
                System.out.println("match found" + temp);
                bcopy.remove(temp);
            }
            for (char j : bcopy) {
                System.out.println("Values" + j);
            }
        }
    }
}

我一直在 remove() 行收到越界错误。有人可以告诉我在按对象可用性搜索时如何达到数组边界吗?我在这里缺少什么?

最佳答案

问题是您正在使用 remove()int 参数版本,因为 char temp 被视为 整数。这是一个解决方法:

bcopy.remove(Character.valueOf(temp));

顺便说一下,一个更好的测试字谜的方法是这样的:

char[] c1 = a.toCharArray();
char[] c2 = b.toCharArray();

Arrays.sort(c1);
Arrays.sort(c2);

return Arrays.equals(c1, c2);  // true -> anagram, false -> not anagram

关于java - 使用数组列表查找字谜,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18753451/

相关文章:

java - 在添加到 ArrayList 后删除偶数元素并返回修改后的 ArrayList

Java数组列表覆盖添加的数据并仅放置最后添加的项目

java - 如何使用 Jersey 测试框架测试 @WebServlet? (抛出 Http 404 not found)

java - Android手机导航-NavController Action类未生成

java - 如果 HashMap 中已存在键,则添加新值

java - 最长公共(public)子序列算法中的绑定(bind)异常

java - 如何交换 ArrayList 中两个对象的位置?

java - 使用鼠标单击在 JLabel 中拖动和移动图片

java - 文件部分是从 Android Webview 下载的

java - 部署在 tomcat 上的 Web 应用程序首次访问速度很慢?