• 第一个只出现一次的字符(剑指offer-34)


    题目描述

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

    题目解析

    最直观的解法是使用 HashMap 对出现次数进行统计,但是考虑到要统计的字符范围有限,因此可以使用整型数组代
    替 HashMap,从而将空间复杂度由 O(N) 降低为 O(1)。

    题目解答

    public int FirstNotRepeatingChar(String str) {
            Map<Character, Integer> map = new HashMap<>();
            for (int  i = 0; i < str.length(); i++) {
                map.put(str.charAt(i), map.getOrDefault(str.charAt(i), 0) + 1);
            }
            for (int i = 0; i < str.length(); i++) {
                if (map.get(str.charAt(i)) == 1) {
                    return i;
                }
            }
            return -1;
        }
    
        public int FirstNotRepeatingChar(String str) {
            int[] num = new int[256];
            for(int i=0;i<str.length();i++){
                num[str.charAt(i)]++;
            }
            for(int i=0;i<str.length();i++){
                if(num[str.charAt(i)]==1)
                    return i;
            }
            return -1;
        }
    
  • 相关阅读:
    gdb调试
    go pipeline
    Go的Timer
    goconvey
    购物
    Go的可行测试
    可能会停止一段时间的更新
    一些blog
    linux全套 | Python开发平台_Ubuntu | 15
    Python基础 | 配置pip镜像源 | 01
  • 原文地址:https://www.cnblogs.com/yzhengy/p/13264926.html
Copyright © 2020-2023  润新知