OD統一考試(C卷)
分值: 100分
題解: Java / Python / C++
題目描述
給你一個字符串 s,字符串s首尾相連成一個環形,請你在環中找出字符出現了偶數次最長子字符串的長度。
輸入描述
輸入是一串小寫字母組成的字符串
輸出描述
輸出是一個整數
示例1
輸入
alolobo輸出
6說明
最長子字符串之一是“alolob”,它包含'o'2個
示例2
輸入
looxdox輸出
7說明
最長子字符串是"oxdolxl",由于是首尾連接在一起的,所以最后一個'x'和開頭的'l'是連接在一起的,此字符串包含2個o。
示例3
輸入
bcbcbc輸出
6說明
這個示例中,字符串“bcbcbc”本身就是最長的,因為o'都出現了0次
題解
這是一個字符串處理問題,需要找出一個環形字符串中字符出現偶數次最長子字符串的長度。
思路
- 首先統計字符串中字符’o’的出現次數。
- 如果字符’o’的出現次數是偶數,那么最長子字符串的長度就是整個字符串的長度。
- 如果字符’o’的出現次數是奇數,那么最長子字符串的長度就是整個字符串長度減1。
C++
#include <iostream>
using namespace std;int main(){string s;cin >> s;int cnt = 0;for(char c : s) if(c == 'o') cnt++;int rs = (cnt % 2 == 0) ? s.length() : s.length() - 1;cout << rs << endl;return 0;
}
Java
import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);String s = in.nextLine();int cnt = 0;for (char c : s.toCharArray()) if (c == 'o') cnt++;int rs = (cnt % 2 == 0) ? s.length() : s.length() - 1;System.out.println(rs);}
}
Python
from collections import Counter
s = input()
cnt = Counter(s)
print((len(s) if cnt['o'] % 2 == 0 else len(s) - 1))
🙏整理題解不易, 如果有幫助到您,請給點個贊 ???? 和收藏 ?,讓更多的人看到。🙏🙏🙏