华为OD机试-- 最长子字符串的长度

494 阅读2分钟

题目

给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 ‘o’ 字符出现了偶数次最长子字符串的长度。

输入描述

输入是一串小写字母组成的字符串

输出描述

输出是一个整数

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

alolobo

输出

6

说明

最长子字符串之一是 “alolob”,它包含’o’ 2个。

**
**

示例2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

looxdolx

输出

7

说明

最长子字符串是 “oxdolxl”,由于是首尾连接在一起的,所以最后一个 ‘x’ 和开头的 ‘l’是连接在一起的,此字符串包含 2 个’o’ 。

示例3 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

bcbcbc

输出

6

说明

这个示例中,字符串 “bcbcbc” 本身就是最长的,因为 ‘o’ 都出现了 0 次。

备注:

1 <= s.length <= 5 x 10^5

s 只包含小写英文字母。

思路

1:要找出最长的包含 o 偶数次的子串,那么两个核心点,第一、偶数次。第二、包含o字符。

2:注意是一个环形的字符串,那么起点从哪里开始都行,如果o的出现次数为奇数,那么我们直接以其中一个 o 的下一个字符为起点,那这样剩下的字符串满足两个条件,o 出现偶数次、且最长。如果出现偶数次,那么整个字符串的长度就是结果。

Java 实现:华为od统一考试B卷【最长子字符串的长度】Java 实现

Python实现:华为od统一考试B卷【最长子字符串的长度】Python 实现

C++ 实现:华为od统一考试B卷【最长子字符串的长度】C++ 实现

JavaScript实现:华为od统一考试B卷【最长子字符串的长度】JavaScript 实现

C实现:2023 华为OD机试(C语言)真题【A卷+B卷】

01c40c554947480000019ae9ff265c.jpg@2o.jpg