剑指 Offer 50. 第一个只出现一次的字符

剑指 Offer 50. 第一个只出现一次的字符

这道题我一开始想复杂了,没必要用map的映射关系,只需要按照给定字符串的顺序去遍历就行了。我是通过遍历字符串并把相应字符串的索引在vector对应的元素每次自增一,然后再来一个循环得到这个vector里面第一次出现的最小的元素并返回这个元素对应的字母。

代码如下:

class Solution {
public:
    char firstUniqChar(string s) {
        vector<int>myvec(26,0);
        char flag='
class Solution {
public:
char firstUniqChar(string s) {
vector<int>myvec(26,0);
char flag='\0';
for(int i=0;i<s.length();i++){
myvec[(int)(s[i]-'a')]++;
}
for(int i=0;i<s.length();i++){
if(myvec[(int)(s[i]-'a')]==1){
flag=s[i];
break;
}
}
if(flag!='\0')return flag;
return ' ';
}
};
'; for(int i=0;i<s.length();i++){ myvec[(int)(s[i]-'a')]++; } for(int i=0;i<s.length();i++){ if(myvec[(int)(s[i]-'a')]==1){ flag=s[i]; break; } } if(flag!='
class Solution {
public:
char firstUniqChar(string s) {
vector<int>myvec(26,0);
char flag='\0';
for(int i=0;i<s.length();i++){
myvec[(int)(s[i]-'a')]++;
}
for(int i=0;i<s.length();i++){
if(myvec[(int)(s[i]-'a')]==1){
flag=s[i];
break;
}
}
if(flag!='\0')return flag;
return ' ';
}
};
')return flag; return ' '; } };

 

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注