题目描述
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
算法1
(哈希) $O(1)$
遍历字符串,使用哈希记录每个字符出现的次数
如果没有出现1次以上的记录 那么每个字符都是仅出现一次的
C++ 代码
class Solution {
public:
set<char> ss;
bool isUnique(string astr) {
for(int i = 0; i < astr.size();i++){
if(ss.count(astr[i])!=0) return false;
ss.insert(astr[i]);
}
return true;
}
};
算法2
(哈希) $O(1)$
优化下速度 使用数组进行字符哈希
会被使用哈希数据结构 速度更快
C++ 代码
class Solution {
public:
int mm[300];
bool isUnique(string astr) {
for(int i = 0; i < astr.size();i++){
if(mm[astr[i] -0] != 0) return false;
mm[astr[i]-0]++;
}
return true;
}
};