Python 字符串常见操作及 面试题:输出字符串中重复的字符,统计字符串中字符出现次数
字符串 str
a=‘hello world’
#字符串 str
a="hello world" #数字、字母、符号、中文
#常规用法:取值和切片
print(len(a))
#统计字符串长度
print(a[6]) #索引取值 w
print(a[-1]) #d
#切片 变量名[m:n:k]
print(a[0:13:1])#hello world
print(a[0:13:3])#hlwl
#打印字符编号为偶数的元素
print(a[0:12:2]) #hlowrd
print(a[::2]) #hlowrd
#使用切片翻转字符串
print(a[::-1]) #dlrow olleh
#拼接字符串
s1='i'
s2="am"
s3=2 #强制转换成字符串 str()
print(s1 + s2 +str(s3)) #iam2 使用+拼接,字符串之间没有空格
print(s1+s2,s3) #iam 2 使用+拼接,逗号会转换成空格,不同类型的使用,拼接
#格式化输出 占位 %d 整型 %f 浮点型 %s字符型,通用
print("我是%s,今年%d岁,身高是:%f"%("helayel",18,180.78))
print("我是{0},今年{1}岁,身高是:{2}".format("helayel",18,180.78))
#字符串函数
a.upper() #全部大写
a.lower()#全部小写
a.swapcase()#大写转小写,小写转大写
s=a.replace('o','啊') #hell啊 w啊rld
替换字符
t=a.replace('o','啊',1) #hell啊 world 替换1次
a.strip()#去掉字符串左右两边的空格
a.replace(" ","")# 去掉字符串左右 中间的空格
#find查找元素
print(a.find('a')) #-1 没有找到返回-1
print(a.find('o')) #4 找到了返回索引,只返回最近的一个
print(a.find('hell')) #0 长度大于1,找到则返回子字符串中 第一个字符所在位置
a.capitalize()#首字母大写,其他小写
a.count('o') #字符串中字符o出现次数
a.index('h') #返回h的索引值
b='123'
print(b.isdigit()) #True 只包含数字
print(a[1].islower()) #True
print(a[1].isupper()) #False
print('@'.join(a)) #h@e@l@l@o@ @w@o@r@l@d
print(a.split(' '))#以空格切割,返回的是列表
print(a.split('l')) #str.split(str='',num=次数)str默认为所有的空字符,包括空格、换行\N,制表符\t等
print(a.split('l', 2))
#字符串转列表
a="asdfftggthgy"
#方法1
b=list(a)
print(b)
#方法2
d=[]
for i in a:
d.append(i)
print(d)
#方法3
s='*'.join(a)
result=s.split('*')
print(result)
面试题目:
1、输出字符串中重复的字符
def repeat_str(str):
i=0 #字符串索引
cf="" #记录重复的数据
bcf="" #记录不重复的数据
while i<len(str):
if str.count(str[i])>1:
if str[i] in cf:
i+=1
continue
cf+=str[i]
else:
bcf+=str[i]
i+=1
print("重复的元素有:%s" %cf)
print("不重复的元素有:%s" %bcf)
repeat_str("euebkdkjdsdd")
统计字符串中字符出现次数:str转成list再统计
方法一:
def repeatStr(li):
duixiang=set(li)
dic={}
for i in duixiang:
dic[i]=li.count(i)
result=sorted(dic.items(),key=lambda x:x[1],reverse=True)
return result
if __name__=="__main__":
str=input("请输入字符串:")
li=[]
for i in str:
li.append(i)
print(li)
print(repeatStr(li))
请输入字符串:hello,world!
[‘h’, ‘e’, ‘l’, ‘l’, ‘o’, ‘,’, ‘w’, ‘o’, ‘r’, ‘l’, ‘d’, ‘!’]
[(‘l’, 3), (‘o’, 2), (’!’, 1), (‘r’, 1), (‘e’, 1), (’,’, 1), (‘d’, 1), (‘h’, 1), (‘w’, 1)]
方法二:
def repeatStr(li):
for i in set(li):
if li.count(i)>=1:
print("%s出现次数为%d:" %(i,li.count(i)))
if __name__=="__main__":
str=input("请输入字符串:")
str=' '.join(str) #先在每个字符之间插入一个空格,组成新的字符串
li=str.split(' ') # 以空格切割字符串为列表
print(repeatStr(li))
方法三:
def repeatStr(li):
from collections import Counter
res = Counter(li)
print(res)
if __name__=="__main__":
str=input("请输入字符串:")
str=' '.join(str) #先在每个字符之间插入一个空格,组成新的字符串
li=str.split(' ') # 以空格切割字符串为列表
print(repeatStr(li))