判定字符是否唯一

判定字符是否唯一

实现一个算法,确定一个字符串 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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值