JAVA字符串有多个重复字符取按字母排序的第一个字符
时间: 2024-10-14 13:05:56 浏览: 28
java字母数字混搭字符串排序[归类].pdf
在Java中,如果你有一个字符串并想找到其中重复字符按字母顺序的第一个,你可以通过以下几个步骤完成:
1. 首先,创建一个`HashMap<Character, Integer>`用于存储每个字符及其出现的次数。
2. 然后遍历输入的字符串,对于每一个字符,如果它已经在哈希表中,增加计数;否则,添加到哈希表中,并设置计数为1。
3. 接着,你需要找出重复次数最多的字符。可以创建一个`Character`变量`maxChar`和一个整数`maxCount`,初始化为第一个遇到的字符和次数。
4. 再次遍历哈希表,检查每个字符的计数是否大于`maxCount`,如果是,则更新`maxChar`和`maxCount`。
5. 最后,从原始字符串中找到第一个出现`maxChar`的索引,返回该位置的字符。
例如:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
String input = "abracadabra";
char result = findFirstDuplicateSorted(input);
System.out.println("按字母排序的第一个重复字符是: " + result);
}
private static char findFirstDuplicateSorted(String str) {
Map<Character, Integer> charCountMap = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (charCountMap.containsKey(c)) {
charCountMap.put(c, charCountMap.get(c) + 1);
} else {
charCountMap.put(c, 1);
}
}
int maxCount = 1;
Character maxChar = null;
for (Map.Entry<Character, Integer> entry : charCountMap.entrySet()) {
if (entry.getValue() > maxCount) {
maxChar = entry.getKey();
maxCount = entry.getValue();
}
}
// 找出第一个重复字符的位置
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == maxChar && charCountMap.get(str.charAt(i)) == maxCount) {
return maxChar;
}
}
return '\u0000'; // 如果没有找到,返回空字符(这里仅作为示例,实际应用中应处理这种情况)
}
}
```
阅读全文