我试图找出两个字符串是否是彼此的变位词:
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/