JAVA leetCode&&程序员面试金典面试题 01.01. 判定字符是否唯一 我的解题记录

面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。

示例 1:

输入: s = "leetcode"
输出: false 
示例 2:

输入: s = "abc"
输出: true
限制:

0 <= len(s) <= 100
如果你不使用额外的数据结构,会很加分。

代码

 	public boolean isUnique(String astr) {
        if(astr.length()<2)
            return true;
        int n=0;
        for(int i=0;i<astr.length();++i){
            if(((1<<(astr.charAt(i)-'a'))&n)!=0){
                return false;
            }
            n|=(1<<(astr.charAt(i)-'a'));
        }
        return true;
    }

我们用一个int n来做一个哈希表
通过 astr.charAt(i)-‘a’ 我们确定了是哪个字母 从而使n的那个位为1 表示已经访问过
遍历时先判断那个位是否为1 我们可以通过&运算来判断两个数之间是否出现位数同为1的 如果不为0 说明那个数在之前就已经出现过了 不唯一

你可能感兴趣的:(算法,LeetCode)