对于一个字符串,请设计一个高效算法,找到第二次重复出现的字符。 给定一个字符串(不一定全为字母),请返回第一个重复出现两次的字符。字符串的长度小于等于500。例如abzxyzza中,第1个重复出现两次的字符是z,则
时间: 2024-05-08 22:22:13 浏览: 173
可以使用哈希表来解决这个问题。遍历字符串,将每个字符作为键存储在哈希表中,并将其值初始化为0。如果在遍历过程中发现字符已经在哈希表中出现过,则将其值加1。最后再遍历一次字符串,找到第一个出现值为2的字符即可。
以下是 Java 代码实现:
```java
public static char findSecondDuplicateChar(String s) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.get(c) == 2) {
return c;
}
}
return '#'; // 没有找到重复字符
}
```
时间复杂度为 $O(n)$,空间复杂度为 $O(n)$。
阅读全文