free-programming-books icon indicating copy to clipboard operation
free-programming-books copied to clipboard

String-解题: 字符串中的第一个唯一字符(NO.387)

Open meibin08 opened this issue 4 years ago • 2 comments

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

  • 案例:
s = "leetcode"
返回 0.
s = "loveleetcode",
返回 2.
  • 注意事项:您可以假定该字符串只包含小写字母。

面试进阶题库

原题链接:力扣(LeetCode)387. 字符串中的第一个唯一字符

meibin08 avatar Mar 19 '20 13:03 meibin08

解题思路

  • lastIndexOf() 方法返回调用String 对象的指定值最后一次出现的索引,在一个字符串中的指定位置 fromIndex处从后向前搜索。如果没找到这个特定值则返回-1 ; ———— JavaScript 标准内置对象StringString.prototype.lastIndexOf()
  • indexOf() 方法返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1
  • 一个从开始往后,一个从后往前,如果结果相等,则返回;
  • 默认返回 -1;

代码

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
  let num = 0;
  
  while(num<s.length){
    let nextNum = num +1;
    let startIndex = s.indexOf(s[num]);
    let endIndex = s.lastIndexOf(s[num]);
    if(endIndex == startIndex){
      
      return num;
    };
    num++;
  }
  return -1;
};

Js中文网,一个致力于帮助开发者用代码改变世界为使命的平台,在这里每天都能找到技术世界的头条内容,包括:前端、大厂面试题、typescript教程、小程序、Javascript、Java等内容。目前已经覆盖超过 300 万开发者,同时还有面试题系列、前端进阶专栏文章等。即便你是 GitHub、StackOverflow、开源中国、掘金的用户,我们相信你也可以在这里有所收获,欢迎热爱技术的你加入交流与学习

meibin08 avatar Mar 19 '20 13:03 meibin08

var firstUniqChar = function(s) {
  
  for(let i=0;i<s.length;i++){
    //let reg = s.match(new RegExp(s[i],'gi'))||[]; 方法1
    let newStr = (""+s).replace(s[i],"");  
    let reg = newStr.includes(s[i]); //方法2
    if(reg == 0){
      return i;
    }
  };
 
  return -1;
};


  • 这种效率好像比较低,执行耗时,估计是replace的原因, JS是一门发展迅速的语言,正因如此,有些新的特性和功能,咱们没有办法在第时间内知道。在这篇文章中,咱们主要探讨一些少有人知道的特性还有一些常用技巧。 获取查询字符串参数 URLSe…

meibin08 avatar Mar 20 '20 01:03 meibin08