• 第一个只出现一次的字符


    题目描述

    在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
    class Solution {
    public:
        int FirstNotRepeatingChar(string str) {
            int n=str.length();
            if(n<1) return -1;
            if(n==1)	return 0;
            sort(str.begin(),str.end());
            int h=str[n-1]-str[0];
            vector <int > s;
            for(int i=0;i<n;i++) {
                s[str[i]]++;
            }
            int k;
            for(int j=0;j<h;j++){
                if(s[j]==1) {
                    k=j;
                    break;
                }
            }
            return k;
        }
    };
    

      您的代码已保存
    运行错误:请检查是否存在数组、列表等越界非法访问,内存非法访问等情况

    class Solution {
    public:
        int FirstNotRepeatingChar(string str) {
            map<char,int> m;
            for(int i=0;i<str.size();++i)
                m[str[i]]++;
            for(int i=0;i<str.size();++i) {
                if(m[str[i]]==1)
                    return i;
            }
            return -1;
        }
    };
    

      

    class Solution {
    public:
        int FirstNotRepeatingChar(string str) {
            int len=str.length();//也可以用size();
            if(len<1||len>10000) return -1;
            int hashmap[256]={0},i;
            for(i=0;i<len;i++){
                hashmap[str[i]]++;
            }
            for(i=0;i<len;i++){
                if(hashmap[str[i]]==1) return i;
            }
            return -1;
        }
    };
    

      

    /*
    C++ 数组实现简单的哈希表进行存储 实现
    哈希表是 每个字符的ASCII码作为键值,对应字符出现的次数作为元素
    */
    class Solution {
    public:
        int FirstNotRepeatingChar(string str) 
        {
            int strSize=str.size();
            if(strSize==0)
                return -1;//不存在
            vector<int> hashNum(256,0);//长度为256的数组,其元素全部为0,用于记录每个字符出现的次数
            int i;
            for(i=0;i<strSize;i++)
                hashNum[str[i]]++;//键值 为 str[i]的ASCII值 的次数+1
            for(i=0;i<strSize;i++)
                if(hashNum[str[i]]==1)
                    break;
            if(i==strSize)
                return -1;
            return i;
        }
    };
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    Cocos2d-x 学习笔记(11.1) MoveBy MoveTo
    Cocos2d-x 学习笔记(10) ActionInstant
    Cocos2d-x 学习笔记(9) Action 运行原理
    Cocos2d-x 学习笔记(8) ActionManager
    Cocos2d-x 学习笔记(7) 内存管理 Sprite SpriteFrame Texture2D
    Cocos2d-x 学习笔记(6) Sprite SpriteFrameCache Texture2D TextureCache
    常见串口术语区分
    串口调试
    Linux
    缓冲区
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7375934.html
Copyright © 2020-2023  润新知