xiannv / xiannv.github.io

blog
0 stars 0 forks source link

【剑指offer】面试题50. 第一个只出现一次的字符 - 简单 #126

Open xiannv opened 4 years ago

xiannv commented 4 years ago

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。

示例:

s = "abaccdeff" 返回 "b"

s = "" 返回 " "  

限制:

0 <= s 的长度 <= 50000

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

xiannv commented 4 years ago

方法一

/**
 * @param {string} s
 * @return {character}
 */
var firstUniqChar = function(s) {
  for(let i=0;i<s.length;i++){
    let str1=s.substr(0,i);
    let str2=s.substr(i+1);
    if(!str1.includes(s[i])&&!str2.includes(s[i])) return s[i]
  }
  return ' '
};
xiannv commented 4 years ago

方法二

/**
 * @param {string} s
 * @return {character}
 */
var firstUniqChar = function(s) {
    if(s === '') return ' ';
    const len = s.length;
    let hashObj = {};//由于js没有hashMmap,所以要自己创建
    for(let i = 0; i < len; i ++) {
        if(hashObj[s[i]] === undefined) {
            hashObj[s[i]] = 1;//出现一次
        } else {
            hashObj[s[i]] = 0;//出现多次
        }
    }
    for(let item in hashObj) {
        if(hashObj[item] === 1) {
            return item;
        }
    }
    return ' '
};