• 第一个只出现一次的字符
    • 题目
    • 解题思路

    第一个只出现一次的字符

    题目

    牛客网

    在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).

    解题思路

    1. 通过 LinkedHashMap 记录数组顺序,然后计算字符出现的次数
    2. 遍历找到第一个只出现 1次 的字符
    1. public int FirstNotRepeatingChar(String str) {
    2. LinkedHashMap<Character, Integer> data = new LinkedHashMap<>();
    3. char[] chars = str.toCharArray();
    4. for (char c : chars) {
    5. Integer count = data.getOrDefault(c, 0);
    6. data.put(c, count + 1);
    7. }
    8. Character res = null;
    9. for (Character c : data.keySet()) {
    10. if (data.get(c) == 1) {
    11. res = c;
    12. break;
    13. }
    14. }
    15. if (res == null) {
    16. return -1;
    17. }
    18. for (int i = 0; i < chars.length; i++) {
    19. if (chars[i] == res) {
    20. return i;
    21. }
    22. }
    23. return -1;
    24. }