题解 | #第一个只出现一次的字符# NC31

第一个只出现一次的字符

http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c


public class Solution {
    // 2、哈希
    public int FirstNotRepeatingChar(String str) {
        HashMap<Character, Boolean>  map = new HashMap<>();
        char[] chars = str.toCharArray();
        for(char c : chars) {
            if(map.containsKey(c)) {
                map.put(c, false); // 重复 置为false
            }else {
                map.put(c, true); // 第一次出现
            }
        }
        for (int i = 0; i < chars.length; i++) {
            // 根据指定的k 查找对应的v 为true返回
            if(map.get(chars[i])) {
                return i;
            }
        }
        return -1;
    }
    
    // 1、数组
    public int FirstNotRepeatingChar1(String str) {
        int[] times = new int[123];
        for (int i = 0; i < str.length(); i++) {
            times[str.charAt(i)]++;
        }
        for (int i = 0; i < str.length(); i++) {
            // 遍历字符串 返回下标
            if(times[str.charAt(i)] == 1) {
                return i;
            }
        }
        return -1;
    }
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务