CC01:确定字符互异

题目

请实现一个算法,确定一个字符串的所有字符是否全都不同。这里我们要求不允许使用额外的存储结构。
给定一个string iniString,请返回一个bool值,True代表所有字符全都不同,False代表存在相同的字符。保证字符串中的字符为ASCII字符。字符串的长度小于等于3000。
测试用例:

"aeiou"
返回:True
"BarackObama"
返回:False

解答

用map结构存储字符串出现元素的个数,若存在一个元素的个数大于1就说明字符串存在相同的字符,直接返回false。代码如下:

class Different {
public:
    bool checkDifferent(string iniString) {
        // write code here
        for(int i=0;i<iniString.length();i++)
        {
            cnt[iniString[i]]++;
            if(cnt[iniString[i]]>1)
                return false;
        }
       return true; 
    }
private:
    map<char,int> cnt;
};
posted @ 2018-06-29 10:03  MrYun  阅读(112)  评论(0编辑  收藏  举报