zoukankan      html  css  js  c++  java
  • 第一个只出现一次的字符

    题目描述

    在一个字符串(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;
        }
    };
    

      

    拥抱明天! 不给自己做枷锁去限制自己。 别让时代的悲哀,成为你人生的悲哀。
  • 相关阅读:
    第一次个人项目【词频统计】——PSP表格
    第一次个人项目【词频统计】——需求分析,代码规范,设计思路
    第一次个人项目【词频统计】——测试样例分析&性能分析
    PHP5 构造函数
    简单的NT框架
    今天开始学内核
    人生感悟
    (十四)网络层OSPF协议
    (十三)网络层RIP协议报文格式
    (十一)网络层ICMP
  • 原文地址:https://www.cnblogs.com/dd2hm/p/7375934.html
Copyright © 2011-2022 走看看