返回目录
题目描述
给你一个字符串 s,首尾相连成一个环形,请你在环中找出 'o' 字符出现了偶数次最长字符串的长度。
输入描述
输入是一个小写字母组成的字符串
输出描述
输出是一个整数
备注
- 1 ≤ s.length ≤ 500000
- s 只包含小写英文字母
实例:
输入 | alolobo |
---|---|
输出 | 6 |
说明 | 最长子字符串之一是 "alolob",它包含2个'o' |
输入 | looxdolx |
---|---|
输出 | 7 |
说明 | 最长子字符串"oxdolxl",由于是首 尾连接一起的,所以最后一个'x'和 开头的'l'是连接在一起的,此字符串 包含2个'o' |
输入 | bcbcbc |
---|---|
输出 | 6 |
说明 | 这个示例中,字符串"bcbcbc"本身 就是最长的,因为'o'都出现了0次。 |
题目解析
本题很简单,只要统计出输入字符串中'o'的个数:
- 如果 'o' 为偶数个,则s本身就是一个含有偶数个'o'的子字符串,结果输出s.length
- 如果 'o' 为奇数个,由于s是环形的,因此只要任选环中任意一个'o'解开(删除),剩下的就是含有偶数个 'o' 的子串,该子串长度为 s.length - 1
Python算法源码
def get_result(input_string):
zero_count = 0
for c in input_string:
if c == 'o':
zero_count += 1
if zero_count % 2 == 0:
return len(input_string)
else:
return len(input_string) - 1
# 输入获取
s = input()
# 算法调用并打印结果
print(get_result(s))
C算法源码
#include <stdio.h>
#include <string.h>
int main() {
char s[500001];
fgets(s, sizeof(s), stdin);
// s中'o'的个数
int count = 0;
// 计算'o'的个数
for (int i = 0; i < strlen(s); i++) {
if (s[i] == 'o') {
countt++;
}
}
// 输出结果
printf("%d\n", count % 2 ? strlen(s) - 1 : strlen(s));
return 0;
}
Java算法源码
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println(calculateResult(scanner.nextLine()));
}
public static int calculateResult(String inputString) {
int length = inputString.length();
int zeroCount = 0;
int i = 0;
while (i < length) {
if (inputString.charAt(i) == 'o') {
zeroCount++;
}
i++;
}
if (zeroCount % 2 == 0) {
return length;
} else {
return length - 1;
}
}
}
5 条评论
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]2024 C卷 100分序号题目知 识 点难易程度1密码输入检测数据结构/栈☆☆☆2分配土地几何问题☆☆☆3找座位逻辑分析☆☆☆4智能成绩表动态条件分析☆☆☆5内存冷热标记多条件排序☆☆☆6螺旋数字矩阵逻辑分析☆☆☆7围棋的气逻辑分析☆☆☆8分割平衡字符串逻辑分析☆☆☆9机器人搬砖二分法☆☆☆10转盘寿司数据结构/栈/单调栈☆☆☆11小明找位置二分法☆☆☆12提取字符串的最长合法简单数学表达式双指[...]
[...]真题目录序号题目 1螺旋数字矩阵 2最富裕的小家庭 3最长字符串的长度(一)[...]