题目:
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
解答:
1 public class Solution { 2 public static void main(String[] args) { 3 String str = "ABBBBBBBCCCCCDDDDDDDEEE"; 4 System.out.println(FirstNotRepeatingChar(str)); 5 } 6 7 public static int FirstNotRepeatingChar(String str) { 8 if(str == null || str.length() == 0) { 9 return -1; 10 } 11 12 Map<Character, Integer> map = new HashMap<>(); // HashMap 13 14 for(int i = 0; i < str.length(); i++) { 15 16 if(map.containsKey(str.charAt(i))) { 17 int count = map.get(str.charAt(i)); 18 map.put(str.charAt(i), count+1); 19 } else { 20 map.put(str.charAt(i), 1); 21 } 22 } 23 24 for(int i = 0; i < str.length(); i++) { 25 if(map.get(str.charAt(i)) == 1) { 26 return i; // return index 27 } 28 } 29 30 return -1; 31 } 32 }