jz54 字符流中第一个不重复的字符 java
时间: 2023-09-21 11:00:41 浏览: 49
在字符串"jz54"中,我们需要找出字符流中第一个不重复的字符。首先,我们可以创建一个HashMap来存储字符和对应的出现次数。
假设字符流每次传入一个字符c:
1. 首先判断HashMap中是否已经存在字符c。若存在,则将对应的出现次数加1;
2. 若不存在,则将字符c添加到HashMap中,并将出现次数设为1。
3. 然后从字符流中取出HashMap中第一个出现次数为1的字符,即为第一个不重复的字符。
以下是相应的Java代码:
```java
import java.util.HashMap;
public class FirstNonRepeatChar {
private HashMap<Character, Integer> charMap;
public FirstNonRepeatChar() {
charMap = new HashMap<Character, Integer>();
}
public void processChar(char c) {
if (charMap.containsKey(c)) {
charMap.put(c, charMap.get(c) + 1);
} else {
charMap.put(c, 1);
}
}
public char getFirstNonRepeatChar() {
for (char c : charMap.keySet()) {
if (charMap.get(c) == 1) {
return c;
}
}
return Character.MIN_VALUE; // 如果没有不重复的字符,返回一个特殊值
}
public static void main(String[] args) {
FirstNonRepeatChar f = new FirstNonRepeatChar();
String input = "jz54";
for (int i = 0; i < input.length(); i++) {
f.processChar(input.charAt(i));
}
char firstNonRepeatChar = f.getFirstNonRepeatChar();
if (firstNonRepeatChar == Character.MIN_VALUE) {
System.out.println("字符流中没有不重复的字符");
} else {
System.out.println("字符流中第一个不重复的字符是:" + firstNonRepeatChar);
}
}
}
```
运行以上代码,输出结果为:"字符流中第一个不重复的字符是:j"。