• 【剑指offer】面试题35:第一个只出现一次的字符


    题目:

    在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符的位置。若为空串,返回-1。(书上是要求返回字符)

    思路:

    第一遍扫描保存下每个字符出现的次数,第二遍扫描顺序检查哪个字符出现的次数为1.没有找到合适的返回-1.

    由于字符的8位的数据类型,共有256种,所以保存次数的哈希表开一个大小为256的数组即可。字符本身即为键值。

    时间复杂度是O(n),空间复杂度是O(1)。

    代码:

    class Solution {
    public:
        int FirstNotRepeatingChar(string str) {
            if(str.size()<=0)  return -1;
            
            int times[256];
            memset(times,0,sizeof(times));
            for(int i=0;i<str.size();++i)
                times[str[i]]++;
            
            for(int i=0;i<str.size();++i)
                if(times[str[i]]==1)  return i;
            
            return -1;//没有符号要求的,返回-1
        }
    };
  • 相关阅读:
    pip安装
    nfs
    源码方式安装软件
    自启动
    multipath
    linux永久添加和删除路由
    iscsi
    linux识别workstation磁盘的uuid
    centos镜像各种cd,dvd版本区别
    转:C# 中 MSCHART 饼状图显示百分比
  • 原文地址:https://www.cnblogs.com/buxizhizhou/p/4727420.html
Copyright © 2020-2023  润新知