编程语言
首页 > 编程语言> > 程序员面试金典:判定字符是否唯一

程序员面试金典:判定字符是否唯一

作者:互联网

判定字符是否唯一

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

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

题解

思考字符串的的字符范围?
字符串是 ASCII 字符串(128个可能性)还是 Unicode 字符串
如果是unicode,没有字符范围,老老实实排序再判断是比较符合要求的,因为算法性能稳定,没有额外资源要求。

代码展示

// 方法一:使用boolean数组的做法是定义一个长度为128的初始值全为false的boolean数组,逐个字符遍历astr,如果bool数组中对应的下标的值为true则重复出现,返回false,否则设置对应下标值为true。
public boolean isUnique(String astr) {
    boolean[] strUnique = new boolean[128];
    for (int i = 0; i < astr.length(); i++) {
        if (!strUnique[astr.charAt(i)])
            strUnique[astr.charAt(i)] = true;
        else
            return false;
    }
    return true;
}
// 方法二:将字符串astr转换为char类型的数组,排序之后比较当前字符和下一个字符是否相等,相等则返回false
public boolean isUnique2(String astr) {
    char[] chars = astr.toCharArray();
    Arrays.sort(chars);
    for (int i = 0; i <chars.length-1 ; i++) {
        if (chars[i]==chars[i+1])
            return false;
    }
    return true;
}

标签:字符,false,程序员,金典,面试,boolean,字符串,astr,true
来源: https://blog.csdn.net/weixin_43896929/article/details/120680563