java 求解字符串中第一次出现的字符的位置

题目:

在字符串中找出第一个只出现一次的字符的位置,如输入“abaccdeff”,则输出“2”。
  • 1

解法:以空间换时间,借助Hashmap实现

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if(str==null||"".equals(str))
            return -1;
        Map<Character,Integer> map = new HashMap<Character,Integer>();
        Set<Character> keys = map.keySet();
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(keys.contains(c)){
                int value = map.get(c).intValue();
                value++;
                map.put(c, value);
            }else{
                map.put(c,1);
            }
        }
        for(int i=0;i<str.length();i++){
            char c = str.charAt(i);
            if(map.get(c).intValue()==1)
                return i;
        }
        return -1;
    }
}

猜你喜欢

转载自blog.csdn.net/nalnait/article/details/81160414