First Unique Character in a String
阿新 • • 發佈:2019-01-02
題目連結
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");