python入門 小甲魚 第十八課 子字母串在目標字符串中共出現幾次

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的循環程度,但無從下手,難受

繼續加油

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章