牛客66道编程题——第一个只出现一次的字符
程序员文章站
2022-07-15 10:44:26
...
题目
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
方法一
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
FALSE=-1#注意题目要求返回-1,因此这里FALSE的定义应该直接是数字-1,而不是字符串-1
L=list(s)#把字符串转换为列表
for i in L:
if L.count(i)==1:#利用count函数进行判断
return L.index(i)
break#注意break摆放的位置
return FALSE
方法二:哈希表法
class Solution:
def FirstNotRepeatingChar(self, s):
# write code here
ls=[0]*256#建立一个长度为256,里面的值都为0的线性表
for i in s:
ls[ord(i)]+=1#统计字符串s中的表的值
for j in s:#查找的过程
if ls[ord(j)]==1:
return s.index(j)
return -1
ord函数
ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值,如果所给的 Unicode 字符超出了你的 Python 定义范围,则会引发一个 TypeError 的异常。
为什么要建立一个长度为256的列表??
因为这道题要处理的是字符串,ord函数处理字符串,返回的是8位的ASCII字符串。8位的ASCII字符串有256种可能,因此需要建立一个长度为256的列表。
上一篇: 数据格式xml和json
下一篇: while循环应用
推荐阅读
-
第一个只出现一次字符的位置 牛客网 剑指Offer
-
【牛客网】第一次只出现一次的字符 解题报告 (python)
-
牛客66道编程题——第一个只出现一次的字符
-
牛客题霸——NC156 数组中只出现一次的数(其它数出现k次)(Javascript)
-
牛客题霸 [数组中只出现一次的数字] C++题解/答案
-
牛客网三道编程题(五) 之华为机试在线训练(四)进制转换、删除重复出现的数字、句子逆序
-
(带思路, 详解) 牛客 HJ59 : 找出字符串中第一个只出现一次的字符
-
牛客66道编程题——数组中出现次数超过一半的数字
-
牛客网三道编程题(三 之华为机试在线训练(二)字符串反转、统计不同字符个数、删除字符串中出现最少的字符
-
牛客66道编程题——数组中只出现一次的数字