[英]How can I optimize this for-loop?
我需要檢查大小為n
的字符串s
中出現的字母"a"
。
例子:
s = "abcac"
n = 10
用於檢查字母"a"
出現的字符串: "abcacabcac"
。
出現次數: 4
我的代碼有效,但我需要它更快地處理較大的n
值。
我能做些什么來優化這段代碼?
def repeatedString(s, n):
a_count, word_iter = 0, 0
for i in range(n):
if s[word_iter] == "a":
a_count+=1
word_iter += 1
if word_iter == (len(s)):
word_iter = 0
return a_count
您只需要組裝完整的重復字符串即可。 計算整個字符串中指定字符的數量,並將其乘以完全重復的次數( n//len(s)
次)。 再加上重復結束時最后(截斷)部分中出現的次數(即前n%len(s)
字符)
def countChar(s,n,c):
return s.count(c)*n//len(s)+s[:n%len(s)].count(c)
output:
countChar("abcac",10,"a") # 4 times in 'abcacabcac'
countChar("abcac",17,"a") # 7 times in 'abcacabcacabcacab'
計算 a 在字符串中出現的次數,s 最長為 n
s = "abcac"
n = 10
str(s*(int(n/len(s))))[:n].count('a')
您可以使用正則表達式:
import re
a_count = len(re.findall(r'a',s))
re.findall
返回一個包含所有匹配項的數組,我們可以得到它的長度。 使用正則表達式允許更大的泛化和搜索更復雜模式的能力。 Debra 的原始答案更適合簡單的字符串搜索:
a_count = s.count('a')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.