注意
本题2022年考过
题目描述
给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。
输入描述
输入是一串小写字母组成的字符串
备注
1 <= s.length <= 5 x 10^5
s 只包含小写英文字母
输出描述
输出是一个整数
示例1
输入
alolobo
输出
6
说明:
最长子字符串之一是 “alolob”,它包含’o’ 2个。
示例2
输入
looxdolx
输出
7
说明:
最长子字符串是 “oxdolxl”,由于是首尾连接在一起的,所以最后一个 ‘x’ 和开头的 ‘l’是连接在一起的,此字符串包含 2 个’o’ 。
示例3
输入
bcbcbc
输出
6
说明:
这个示例中,字符串 “bcbcbc” 本身就是最长的,因为 ‘o’ 都出现了 0 次。
解题思路
这段Java代码的核心解题思路主要包括以下几个步骤:
- 读取用户输入:首先,代码创建了一个Scanner对象,用于读取用户输入的字符串。
- 获取字符串长度:代码获取了字符数组的长度,这个长度值在后续的输出中会用到。
- 统计’o’字符的数量: 遍历字符数组,每遇到一个’o’字符,就将计数器加1,以统计’o’字符的总数量。
- 根据’o’字符的数量决定输出:最后,代码检查了’o’字符的数量。如果’o’字符的数量是偶数,那么就输出字符串的长度;如果’o’字符的数量是奇数,那么就输出字符串长度减1,因为字符串是环形的,只需要删除其中一个o然后就是偶数次最长子串。
C++
#include <iostream>
#include