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");
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

. . . . .

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值