python 子字母串在目標字符串中共出現幾次?
題目:
編寫一個函數findstr(),該函數統計一個長度爲2的子字符串在另一個字符串中出現的次數。例如:假定輸入的字符串爲
str1=“You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.”,
子字符串爲
str2=“im”,
函數執行後打印“子字母串在目標字符串中共出現3次”。
解題思路:先將str1,str2的長度找到,在將str1中的每一個字符與str2中的第一個對比,看是否繼續對比str2後續字符,若能全部對上,則相同的字符個數爲str2的長度,否則,則說明不能對上,進入下一個循環!
若相同的字符個數爲str2的長度,計數器+1,輸出計數器,就爲結果。
代碼如下
def findstr(str1,str2):
long_str1=len(str1) #獲取字符串str1的長度
long_str2=len(str2)#獲取字符串str2的長度
temp=0 #計數器
for each in range(long_str1-long_str2): #(long_str1-long_str2),防止字符串str1超出
count=0 #對重複字符進行判斷
for i in range(long_str2):#遍歷str2字符串
if str1[each+i]==str2[i]:#比較是否一致
count+=1
if count==long_str2:
#如果有連續相同的字符,且相同數與str2的長度一致,我們就認爲有一個字符串相同
temp+=1
print(temp)
str1="You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted."
str2="you"
findstr(str1,str2)
改進,想減少str1的循環程度,但無從下手,難受
繼續加油