leetcode 链接:判定字符是否唯一

题目

实现一个算法,确定一个字符串 s 的所有字符是否全都不同。假使不 允许使用额外的数据结构,又该如何处理?
示例:

  1. 输入: s = "leetcode"
  2. 输出: false
  3. 输入: s = "abc"
  4. 输出: true

解答 & 代码

如果没有题目中不允许使用额外的数据结构的限制,则可以使用哈希表(散列表)

本题解法:

  • 首先,如果字符串为空,则直接返回 true
  • 对字符串进行排序(可以收用 <algorithm> 头文件自带的 sort() ,对字符串进行升序排序;也可以自己实现排序算法)
  • 遍历排序后字符串的各个字符,如果前后两个相邻字符相同,说明有重复,返回 false
  • 遍历结束,无相邻的相同字符,返回 true ```cpp

    include

class Solution { public: bool isUnique(string astr) { if(astr.size() == 0) return true;

    sort(astr.begin(), astr.end());

    char ch = astr[0];
    for(int i = 1; i < astr.size(); i++)
    {
        if(ch == astr[i])
            return false;
        ch = astr[i];
    }
    return true;
}

}; ```