剑指offer——第一个只出现一次的字符

本文介绍了一道来自剑指Offer的编程题,旨在寻找字符串中第一个不重复的字符及其位置。提供了多种Python解决方案,包括常规方法、一行代码解决、使用内置函数、哈希表优化等,展示了Python编程的灵活性和高效性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个题在剑指offer里属于常规题,主要看编程语言的运用的如何巧。
python 常规操作,用count计数,index输出位置

class Solution():
	def FirstNotRepeatingChar(self,s):
		if len(s)<1:return -1
		for i in s:
			if s.count(i)==1:
				return s.index(i)
				break
		return -1

大神压缩,一行Python代码搞定

class Solution():
	def FirstNotRepeatingChar(self,s):
		return [i for i in range(len(s))  if s.count(s[i])==1][0] if s else -1

采用内置函数

class Solution():
	def FirstNotRepeatingChar(self,s):
		return s.index(list(filter(lambda c:s.count(c)==1,s)[0]) if s else -1

使用哈希表

class  Solution():
	def FirstNotRepeatingChar(self,s):
	 	Is=[0]*256
	 	for i in s:
	 		ls[ord[i]]+=1
	 	for j in s:
	 		if ls[ord[j]]==1:
	 			return s.index(j)
	 			break
	 	return -1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值