判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = “leetcode”
输出: false
示例 2:
输入: s = “abc”
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
方法1
char[] chars = astr.toCharArray();
Set set = new HashSet();
for (char c: chars) {
set.add©;
}
return set.size() == chars.length;
方法2
把字符串中每个字符转化为一个二进制数,转化方法为1向左N位的位运算,N为这个字符和字符‘a’的距离;
这种情况下,如果当前字符如果曾经出现过,也就是其中某一位对应位数的值为1,就意味着曾经出现,返回False;
方法3
Map<Character, Object> objectMap = new HashMap<>(8);
for (int i = 0; i < astr.length(); i++) {
if (objectMap.containsKey(astr.charAt(i))) {
return false;
}
objectMap.put(astr.charAt(i), i);
}
return true;
方法4
int[] arr = new int[128];
for (int i = 0; i < astr.length(); i++) {
if (arr[astr.charAt(i)] != 0) {
return false;
}
arr[astr.charAt(i)]++;
}
return true;
//方法5 使用string的indexOf和lastIndexOf方法
for (int i = 0; i < astr.length(); i++) {
char c = astr.charAt(i);
if (astr.indexOf© != astr.lastIndexOf©) {
return false;
}
}
return true;