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

第一个只出现一次的字符

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

思路一:

由于字符只出现一次,所以 该字符 第一次出现的位置 和 他最后出现的一次位置 是相同的,遍历字符串,如果第一次出现的位置等于 最后一次出现的位置,返回下标:

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        char[] splitChat = str.toCharArray();
        for (int i = 0; i < splitChat.length; i++) {
            if (str.indexOf(splitChat[i]) == str.lastIndexOf(splitChat[i])) {
                return i;
            }
        }
        return -1;
    }
}

总结: 字符判断 用 == 因为是 八大类型;

思路二:

根据hashMap的特性,只允许出现一次 key, key不能相同,如果包含map.containsKey(str.charAt(i)) , value的值加一,根据这个特性,统计出单个字符串出现的次数,然后 遍历 map的value的值,如果等于 1,说明第一次出现一次,直接返回;

import java.util.HashMap;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            if (map.containsKey(str.charAt(i))) { // 如果有 key 就 value加一,没有的话,放进去
                int time = map.get(str.charAt(i));  // 获取value
                map.put(str.charAt(i), ++time);
            } else {
                map.put(str.charAt(i), 1);
            }
        }

        for (int i = 0; i < str.length(); i++) {
            if (map.get(str.charAt(i)) == 1) {
                return i;
            }
        }
        return -1;
    }
}

使用hashMap统计 string 里面 字符出现的次数

public HashMap countChar(String str){
        HashMap<Character, Integer> map = new HashMap<>();
        for (int i = 0; i < str.length(); i++) {
            if (map.containsKey(str.charAt(i))) { // 如果有 key 就 value加一,没有的话,放进去
                int time = map.get(str.charAt(i));  // 获取value
                map.put(str.charAt(i), ++time);
            } else {
                map.put(str.charAt(i), 1);
            }
        }
        return map;
    }

// 解释: map里面的 key 代表字符,value 代表出现的次数
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-21 13:41
点赞 评论 收藏
分享
07-22 11:12
门头沟学院 Java
不是,我就随手投的怎么还真发面试啊
皮格吉:大厂特别快的——来自已经被共享中
点赞 评论 收藏
分享
一表renzha:不是你说是南通我都没往那方面想,人家真是想表达那个意思吗?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务