1. 程式人生 > >First Unique Character in a String

First Unique Character in a String

題目連結

Given a string, find the first non-repeating character in it and return it’s index. If it doesn’t exist, return -1.
Examples:

s = “leetcode”
return 0.
s = “loveleetcode”,
return 2.

Note:
You may assume the string contain only lowercase letters.

python程式碼實現

class Solution:
    def
firstUniqChar(self, s): """ :type s: str :rtype: int """ s_len = len(s) if s_len == 1: return 0 for i in range(s_len): if s[i] == '0': continue elif s[i] not in s[i + 1:]: return
i else: s = s.replace(s[i], '0', s.count(s[i])) return -1 # # class Solution: # def firstUniqChar(self, s): # """ # :type s: str # :rtype: int # """ # if len(s) == 1: # return 0 # for key, item in enumerate(s):
# s_s = s[key + 1:] # if item not in s_s and key != len(s) - 1: # return key # elif item == '0': # continue # else: # s = s.replace(item, '0', s.count(item)) # return -1 s = Solution() res = s.firstUniqChar("aadadaad") print(res)

此題總結:

  • 注意註釋部分是錯誤的寫法,這種寫法的錯誤主要導致原因是enumerate這個裝箱函式導致的。因為把字串裝入enumerate之後,字串就被封閉起來了,那麼在外面對這個字串的修改也不會影響裝箱裡面的那個字串。
  • 而非註釋部分則通過對字串的修改會影響當前遍歷的字串。

JavaScript程式碼實現:

/**
 * @param {string} s
 * @return {number}
 */
var firstUniqChar = function(s) {
    let s_len = s.length
    if(s_len === 1)
    	return 0
    for(let i=0;i<s_len;i++){
    	if(s[i] === '0'){
    		continue
    	}else if(s.substring(i+1).indexOf(s[i])=== -1){
    		return i
    	}else{
    		s = s.replace(new RegExp(s[i],'g'), '0')
    	}
    }
    return -1

};

javascript程式碼總結

在JavaScript字串替換中:

#只替換第一次出現的位置
var str="Visit Microsoft! Visit Microsoft!";
var n=str.replace("Microsoft","Runoob");
#用正則模式全域性替換
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/g,"red");
#用正則模式全域性替換並忽略大小寫
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/gi,"red");
#用正則模式全域性替換變數
var str="Mr Blue has a blue house and a blue car";
let temp = 'blue'
var n=str.replace(new RegExp(temp,'g'),"red");