判定字符是否唯一 

实现一个算法,确定一个字符串 s 的所有字符是否全都不同

示例 1

输入: s = "leetcode"

输出: false

示例 2

输入: s = "abc"

输出: true

限制:

0 <= len(s) <= 100

如果你不使用额外的数据结构,会很加分。

mine

用set去重的原理

public static boolean isUnique(String astr) {
    char[] chars = astr.toCharArray();
    HashSet<Character> set = new HashSet<>();
    for (char aChar : chars) {
        if (!set.add(aChar)) {
            return false;
        }
    }
    return true;
}

用stream流去重方法,好像效率不太行

public static boolean isUnique1(String astr) {
    long count = astr.chars().distinct().count();
    return count == astr.length();
}

other

采用位运算

public static boolean isUnique2(String astr) {
    int aa = 0;
    int cc = 1;
    for (int i = 0; i < astr.length(); i++) {
        char t = astr.charAt(i);
        int offset = t - 'a';
        int bb = cc << offset;
        if ((aa & bb) != 0) {
            return false;
        }
        aa |= bb;
    }
    return true;
}
文章作者: 已删除用户
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yida
Back-end LeetCode
喜欢就支持一下吧