题目
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。
示例 1:
输入: s = "leetcode"
输出: false
示例 2:
输入: s = "abc"
输出: true
限制:
- 0 <= len(s) <= 100
- s[i]仅包含小写字母
- 如果你不使用额外的数据结构,会很加分。
代码
/**
* @param {string} astr
* @return {boolean}
*/
var isUnique = function(astr) {
for (var i = 0; i < astr.length; i++) {
for (var j = i + 1; j < astr.length; j++) {
if (astr[i] === astr[j]) {
return false;
}
}
}
return true;
};
算法思路:遍历字符串中的每个字符,然后对于每个字符,再次遍历剩余的字符,检查是否存在相同的字符。如果找到了相同的字符,则返回false,否则返回true。
遇到的问题
- param 参数
- astr.length 没有括号
- 是astr[i] ===astr[j] ,不是 i === j(字符串中的两个字符进行比较,应该用数组的形式;i 和 j 只是单纯的数字,无法单独代表字符)
- 相等是三等号 ===
解法2
/**
* @param {string} astr
* @return {boolean}
*/
var isUnique = function (astr) {
return new Set([...astr]).size === astr.length
};
算法思路:[...astr] 将字符串转换为字符数组;new Set([...astr]) 通过Set数据结构将字符数组转换为一个集合,集合的特性是不包含重复元素。如果集合的大小和字符串的长度相同(说明每个字符都不同),则返回true,否则返回false。