歡迎加入我的 Discord 群組與我討論程式相關的問題!

Posted on 

 by 

 in ,

CSES – Repetitions

評分:1 分,滿分為 5。

題目連結

題意

給一個只有包含 A, T, C, G 的字串,找到只有包含一種字元的最長子字串

解題想法

紀錄目前只有一種字元的字串長度,如果跟前面的不一樣就重新開始計算
下面的code我的 i 是故意多跑到 = s.size(),這樣的話如果最後兩個字母是一樣的,最新的答案也會被算進去!

如果單純判斷 s[i] == s[i-1] 的話,最後兩個字母一樣的話我們不會再次更新答案。

#include <bits/stdc++.h>
using namespace std;
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    string s;
    cin >> s;
    int now = 1, ans = 0;
    for(int i = 1;i <= s.size();i++){
	if(i < s.size() && s[i] == s[i-1]) now ++;
	else {
	    ans = max(ans, now);
	    now = 1;
	}
    }
    cout << ans << '\n';
}

發表迴響

Blog at WordPress.com.

%d 位部落客按了讚: