Java给定字符串,找出有重复字符,并输出其位置
时间: 2024-09-25 18:02:30 浏览: 27
在Java中,你可以通过以下步骤找到一个字符串中是否有重复的字符及其位置:
1. 首先,创建一个`HashMap<Character, Integer>`来存储每个字符及其出现的位置。`HashMap`的关键是字符,值是一个整数数组,用于存储该字符的所有索引。
```java
Map<Character, List<Integer>> charMap = new HashMap<>();
```
2. 遍历字符串,对于每个字符,检查它是否已经在地图中。如果不在,添加到映射并初始化列表;如果已经存在,获取当前字符列表并添加新的索引。
```java
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (!charMap.containsKey(c)) {
charMap.put(c, new ArrayList<>());
}
charMap.get(c).add(i);
}
```
3. 接下来,遍历映射,查找那些包含超过一个元素的列表,即字符有重复出现的情况。
```java
for (Map.Entry<Character, List<Integer>> entry : charMap.entrySet()) {
if (entry.getValue().size() > 1) {
char duplicateChar = entry.getKey();
System.out.println("字符 '" + duplicateChar + "' 的重复位置有:");
for (int position : entry.getValue()) {
System.out.println(position);
}
}
}
```
这个程序会输出所有重复字符及其第一次出现的位置。注意,这里的“位置”是指字符首次在字符串中出现的位置,而不是重复出现的所有位置。