【发布时间】:2022-06-20 20:49:28
【问题描述】:
这是一个示例输入:
字符串测试 = "1 2 3 4 5 42"; 字符串 test2 = test.replaceAll(" ","");
public static boolean uniqueNumbers(String test2) {
char[] testEntries= test2.toCharArray();
Set<Character> set = new HashSet<>();
for (int i = 0 ; i < testEntries.length ; i++ ) {
if(!set.add(testEntries[i])) {
return false;
}
}
return true;
}
尽管都是唯一的数字,但它会返回 false。有没有办法解决这个问题?
【问题讨论】:
-
这是因为您检查的是重复字符,而不是数字。虽然 4 和 42 不同,但都包含 4,所以它返回 false。
-
您正在使用
test.replaceAll(" ","")删除所有空格,因此您要检查的数字是1234542。您打算如何区分该号码中的2和4和42? -
是的,这就是我卡住的部分。我知道它在检查 1234542 之间返回 false。
-
您需要将原始字符串传递给
uniqueNumbers,因为如果您传递已经替换了空格的字符串,那么将2和4与@区分开来已经太迟了987654330@。然后在空格上拆分字符串,这样你就得到了一个包含所有单独数字的数组,而不是每个字符的数组。
标签: java