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