#28670: 這樣複雜嗎?


rexwu1104@gmail.com (黑雪公主 Black Lotus)

學校 : 新北市私立南山高級中學
編號 : 93041
來源 : [118.166.54.130]
最後登入時間 :
2022-06-06 20:48:09
c462. apcs 交錯字串 (Alternating Strings) -- apcs | From: [203.71.175.142] | 發表日期 : 2021-12-25 11:31

def same(s1: str, s2: str):

    return (s1.islower() & s2.islower()) | \

               (s1.isupper() & s2.isupper()) | \

               (s1 == '')

 

k = int(input())

s = input()

 

result = 0

tmp_result = 0

now_s = ''

 

for c in s: <- 搜尋字串

    if len(now_s) == k: <- 檢查現在的字串長度是否與 k 值相同

        if same(now_s, c): <- 是否為同類型 ex. '小寫' or '大寫'

            now_s = now_s[1:] + c <- 是的話,就讓讀到的字元解上去,並且為保持長度,將第一個字元移除 (其實這句語法好像不需要)

            tmp_result = k <- 長度維持 k (因為會進來就代表之前一定有到過 k)

        else:

            now_s = c <- 字串重新開始

            tmp_result += 1 if k == 1 else 0 <- 如果 k 值等於 1 代表新字串同時也是一個新的 k-交錯字串

    else: <- 不相同代表字串長度還沒到 k

        if same(now_s, c):

            now_s += c <- 同類型的話,就把字元加進去

            if len(now_s) == k:

                tmp_result += k <- 加完字串長度到 k 時,就讓長度加 k

        else:

            now_s = c; tmp_result = 0 <- 不同類型就把字元變為新字串,並且把長度歸 0

    result = max(result, tmp_result) <- 取真實長度與暫時長度的最大值

 

print(result) <- 輸出

 
ZeroJudge Forum