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

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

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

代码如下:

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 ' ';
    }
};

 

发表回复

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