S.length()) return ""; -6ren">
gpt4 book ai didi

java - 有人能明白为什么这里两个 "Integers"不能进行比较吗?

转载 作者:行者123 更新时间:2023-12-01 22:21:26 24 4
gpt4 key购买 nike

public String minWindow(String S, String T) {
if (T.length() > S.length())
return "";
HashMap<Character, Integer> set = new HashMap<>();
for (int i = 0; i < T.length(); i++) {
if (!set.containsKey(T.charAt(i))) {
set.put(T.charAt(i), 1);
} else {
set.put(T.charAt(i), set.get(T.charAt(i)) + 1);
}
}
int count = 0;
int min = Integer.MAX_VALUE;
int begin = 0;
int end = 0;
LinkedList<Integer> index = new LinkedList<>();
HashMap<Character, Integer> record = new HashMap<>();
for (int i = 0; i < S.length(); i++) {
Character tmp = S.charAt(i);
if (set.containsKey(tmp)) {
index.add(i);
if (record.containsKey(tmp)) {
record.put(tmp, record.get(tmp) + 1);

} else {
record.put(tmp, 1);
}

int num1 = record.get(tmp);
int num2 = set.get(tmp);
if (num1 == num2) {
count++;
}
if (count == set.size()) {
Character head = S.charAt(index.peek());
while (record.get(head) > set.get(head)) {
record.put(head, record.get(head) - 1);
index.remove();
head = S.charAt(index.peek());
}
if (index.getLast() - index.peek() < min) {
min = index.getLast() - index.peek();
begin = index.peek();
end = index.getLast();
}
}
} else {
continue;
}
}
if (min == Integer.MAX_VALUE) {
return "";
} else {

return S.substring(begin, end + 1);
}
}

这是我的一个 Leetcode 问题的代码。但我认为这不涉及算法问题。所以我把它贴在这里。问题是这样的:
我用一个hashmap“记录”记录S中的重复字符,用另一个“集合”记录T中的重复字符。当重复字符数相等时,变量“count”加1;
我通过了所有测试,除了最后一个 S 是长度为 100000 的字符串,T 是长度为 10001 的字符串。
我必须使用此表格:

            int num1 = record.get(tmp);
int num2 = set.get(tmp);
if (num1 == num2) {
count++;
}

而不是:

            if(record.get(tmp)==set.get(tmp)){
count++;
}

只有这样才能比较两个整数,否则“计数”不会相加。为什么前 265 个测试用例可以通过,但最后一个大字符串却出现问题?预先感谢您。

最佳答案

因为您的 map 的值是整数。整数是对象,必须使用 equals 方法进行比较。

if(record.get(tmp).equals(set.get(tmp))){

关于java - 有人能明白为什么这里两个 "Integers"不能进行比较吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com