[javaspript解力扣题] 01.01.判定字符是否唯一

力扣面试题 01.01. 判定字符是否唯一

题目描述

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

示例 1:

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

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

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

题解1

// 两次遍历,判断当前字符在之后的子串中是否出现
var isUnique = function(astr) {
    
    
    for(let i = 0; i < astr.length; i++) {
    
    
        for (let j = i + 1; j < astr.length; j++) {
    
    
            if (astr[i] == astr[j]) {
    
    
                return false;
            }
        }
    }
    return true;
}

题解2

//直接利用new Set()构造集合,利用集合元素不能重复的特性
var isUnique = function(astr) {
    
    
	return new Set(astr).size == astr.length;
}

题解3

//利用了求字符串中某个字符第一和最后一次出现的索引,
//若不同说明有两个以上相同的字符出现
var isUnique = function(astr) {
    
    
    for (let a of astr) {
    
    
        if (astr.indexOf(a) !== astr.lastIndexOf(a)) {
    
    
            return false;
        }
    }
    return true;
}

题解4

// 字符与128位二进制对应,有字符,则相应位置为1,
// 若已置为1,则相与不为0,返回false
var isUnique = function(astr) {
    
    
    var mark = 0
    for(var char of astr) {
    
    
        var move_bit = char.charCodeAt();
        console.log(move_bit);
        console.log(1 << move_bit);
        if ((mark & (1 << move_bit)) !== 0) {
    
    
            return false
        }
        mark = mark | (1 << move_bit)
    }
    return true
}

猜你喜欢

转载自blog.csdn.net/weixin_44495869/article/details/121217353