题目:字符串中第一个只出现一次的字符。在字符串中找出第一个只出现一次的字符。如输入“abaccdeff”,则输出'b'。
package offer;
import java.util.HashMap;
import java.util.Scanner;
public class Solution50 {
public int FirstNotRepeatingChar(String str) {
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
// 第一次遍历,统计字符串中每个字符出现的次数
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.containsKey(c)) {
int time = map.get(c);
time++;
map.put(c, time);
} else {
map.put(c, 1);
}
}
// 第二次遍历,找出第一个出现次数为“1”的字符的位置
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (map.get(c) == 1)
return i;
}
return -1;
}
public static void main(String[] args) {
Solution50 sl = new Solution50();
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String str = scanner.next();
System.out.println("第一个只出现一次的字符为:" + sl.FirstNotRepeatingChar(str));
}
}