一、题目
实现一个算法,确定一个字符串 s
的所有字符是否全都不同。
示例 1:
输入: s = "leetcode" 输出: false
示例 2:
输入: s = "abc" 输出: true
限制:
0 <= len(s) <= 100
-
s[i]
仅包含小写字母
二、思路解析
这道题我是用位图思想做出来的。
用每⼀个「比特位」代表⼀个字符,比特位里面如果是 0 ,表示这个字符没有出现过。比特位里面的值是 1 ,表示该字符出现过。
首先题目说了,仅包含小写字母,那一个 int 类型的 32 位就足够表示了,甚至还比 26 位多了一丁点空间,不过浪费这点无所谓。
算法实现就是这样了,听简短的,但代码实现却挺多细节的,具体实现请看下面代码????
三、完整代码
class Solution {
public boolean isUnique(String astr) {
int len = astr.length();
if(len > 26){
return false;
}
int bitMap = 0;
for(int i = 0 ; i < astr.length() ; i ++){
int x = astr.charAt(i) - 'a';
if(((bitMap >> x) & 1) == 1){
return false;
}
bitMap |= 1 << x;
}
return true;
}
}
以上就是本篇博客的全部内容啦,如有不足之处,还请各位指出,期待能和各位一起进步!