⚡️剑指 Offer 50. 第一个只出现一次的字符⚡️
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = “abaccdeff”
输出:‘b’
示例 2:
输入:s = “”
输出:’ ’
限制:
0 <= s 的长度 <= 50000
⚡️分析⚡️
记一次时间复杂度差点100%
通过两次indexOf的api来查询是否有重复的字母出现即可,如果第二次是-1那就没,如果是别的数字那就有重复的
代码如下:
/**
* @param {string} s
* @return {character}
*/
var firstUniqChar = function(s) {
for(let i = 0; i < s.length; i++) {
if(sum(s, s[i])) return s[i];
}
return ' ';
};
function sum(s, char) {
let index = s.indexOf(char);
index = s.indexOf(char,index + 1);
return have = index == -1 ? true : false; // 如果不是-1说明有重复返回false,如果是-1那没重复就返回true
}
算法效率如图: