用java给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
时间: 2024-09-28 13:06:00 浏览: 48
在 Java 中,我们可以使用哈希表(HashMap)的数据结构来解决这个问题。以下是具体的步骤:
1. 创建一个 HashMap,用于存储每个字符及其出现的次数。
2. 遍历输入的字符串,对于每一个字符,如果它已经在 HashMap 中,则增加其计数;否则,在 HashMap 中添加该字符并设置计数为 1。
3. 同时维护一个变量,记录当前未出现两次的字符(假设初始值为第一个字符),如果遇到相同的字符并且计数大于 1,更新这个变量。
4. 遍历结束后,检查 `current` 变量对应的字符是否在 HashMap 中的计数为 1,如果是,则返回该字符;否则返回 "no"。
下面是一个简单的示例代码实现:
```java
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
String str = "banana";
char firstUniqueChar = findFirstUniqueChar(str);
if (firstUniqueChar != 'no') {
System.out.println("The first unique character is: " + firstUniqueChar);
} else {
System.out.println("No unique character found.");
}
}
public static char findFirstUniqueChar(String str) {
HashMap<Character, Integer> charCountMap = new HashMap<>();
for (char c : str.toCharArray()) {
if (charCountMap.containsKey(c)) {
charCountMap.put(c, charCountMap.get(c) + 1);
} else {
charCountMap.put(c, 1);
}
// 如果当前字符出现过两次,更新 current
if (charCountMap.get(c) == 2) {
char current = c;
while (charCountMap.get(current) > 1) {
current++;
}
if (current == c) { // 没有找到新的唯一字符
return 'no';
}
}
}
// 如果遍历完都没有找到第二次出现的字符,说明第一个字符就是唯一的
return charCountMap.keySet().toArray()[0];
}
}
```
阅读全文