难度
标签
题目描述
示例 1:
输入: s = "leetcode"输出: false
示例 2:
输入: s = "abc"输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
题解
1. 使用set
import java.util.HashSet;class Solution {public boolean isUnique(String astr) {HashSet<Character> set = new HashSet<>();for(int i = 0; i < astr.length(); i++) {char cur = astr.charAt(i);if(set.contains(cur)) {return false;}set.add(cur);}return true;}}
2. 使用位运算,如果字符串s都是字母。
‘A’的ASCII码是65,小写字母’z’的ASCII码是122,两者相差58,可以用一个long值来存。
class Solution {public boolean isUnique(String astr) {long bits = 0;for(int i = 0; i < astr.length(); i++) {char cur = astr.charAt(i);int move = cur - 'A';long curBit = 1L << move;if((curBit & bits) != 0) {return false;}bits |= curBit;}return true;}}
