【问题标题】:First Unique Character in a String Leetcode - using pointers (javascript)字符串 Leetcode 中的第一个唯一字符 - 使用指针 (javascript)
【发布时间】:2021-01-17 18:04:44
【问题描述】:

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

leetcode question

"cc"            // -1
"ccdd"          // -1
"leetcode"      // 1
"loveleetcode"  // 2
"abcabd"        // 2
"thedailybyte"  // 1
"developer"     // 0

我的方法通过了除第二个测试用例"ccdd" 之外的所有测试用例。我期待-1,但收到4。不知道为什么。

var firstUniqChar = function(s) {
    if(!s || s.length === 0 )  return -1
    else if(s.length === 1)    return 0
    
    let pointer1 = 0
    let pointer2 = pointer1 + 1
    
    if(s.length > 2){
        while(pointer2 <= s.length - 1){
            if(s[pointer1] !== s[pointer2])
                pointer2++
            else if(s[pointer1] === s[pointer2])
                pointer1++
            }
        
        return pointer1
    }
    return -1
    
};

【问题讨论】:

  • 一些有用的问题来指导您的调试:pointer1 &gt;= pointer2 时会发生什么?应该发生什么?如果pointer1 &gt;= s.length,该方法应该返回什么?
  • 如果我将 while 语句更改为 pointer1 &gt;= pointer2pointer1 &gt;= s.length 它返回 0 ,而不是 -1 。它还为其他测试用例返回0,例如"loveleetcode"

标签: javascript pointers data-structures


【解决方案1】:

这太旧了,但仍然可以太短:

const firstUniqChar = (_str) => {
  for (let i= 0; i < _str.length; i+= 1) {
    if (_str.indexOf(_str[i]) === _str.lastIndexOf(_str[i])) return i+1;
  }
  return -1;
}

【讨论】:

    猜你喜欢
    • 2021-10-10
    • 2021-05-27
    • 1970-01-01
    • 2017-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2020-11-22
    相关资源
    最近更新 更多