![](/img/trans.png)
[英]Python pandas counting the number of unique string sources for substrings
[英]Counting number of binary substrings of length 3+ with one unique element
本質上,我得到了兩行輸入。 第一行是輸入第二行中呈現的 substring 的 integer 長度,僅由 Gs 和 Hs 組成,類似於 0s 和 1s。
N = int(input())
chars = list(input())
lonely = 0
for i in range(3, N + 1):
for j in range(N - i + 1):
if ((chars[j:j + i].count('G') == 1) or (chars[j:j + i].count('H') == 1)):
lonely += 1
print(lonely)
一個示例輸入是:
5
GHGHG
答案是3
:答案是原始字符串的長度為 3 或更大且只有一個 G 或一個 H 的子串的數量(這個 G 或 H 是“孤獨的”),對於上面的示例,子串符合此標准的是chars[0:3]
、 chars[1:4]
和chars[2:5]
。 雖然我認為這在技術上是正確的,但對N
沒有限制,所以我對N = 5000
等的測試用例超時(每個測試用例的時間限制為 4 秒)。
我該如何解決這個問題?
謝謝!
這應該更快:
chars = "GHGHG"
count = 0
for letter in "GH": # count for G, then H
prev = 0 # length of previous non-letter
for s in map(len,chars.split(letter)): # get in-betweens
s = min(2,s) # look at no more than 2 each side
count += max(0,s+prev-1) # before+after >= 2
prev = s
print(count) # 3
如果您在字母“G”上拆分字符串,您將在各個 G 之間獲得 H。 如果 G 每一側的 H 總數 >= 2,那么您有一個 substring,其中有一個 G。 您只需要查看前后最多 2 個 H。
前后計數限制為 2,只有 9 種可能性:
您可以以相同的方式獲得孤獨的“H”計數(即在 H 上拆分)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.