【数组】【位操作】面试题 01.01. 判定字符是否唯一
题目:
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。
解答:
空间复杂度O(1)的方法:
将哈希表的实现由数组改成一个int变量,因为字母只有26个,只需要26bit就可以表示是否已经访问过
class Solution { public boolean isUnique(String astr) { // boolean[] chs = new boolean[26]; // for(int i = 0;i<astr.length();i++){ // int idx = astr.charAt(i) - 'a'; // if(chs[idx]){ // return false; // }else{ // chs[idx] = true; // } // } //将哈希表实现由数组改成一个int变量,因为字母只有26个,只需要26bit就可以表示是否已经访问过 //boolean[] chs = new boolean[26]; int mark = 0; for(int i = 0;i<astr.length();i++){ int idx = astr.charAt(i) - 'a'; if((mark&(1<<idx))!=0){ return false; }else{ mark = mark|1<<idx; } } return true; } }

浙公网安备 33010602011771号