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))