给你一个字符串s,字符串s首尾相连组成一个环形,请你在环形中找出‘o’字符出现了偶数次最长子字符串的长度。
输入一串小写字母组成的字符串。
输出一个整数。
题目要求在给定的环形字符串中找出字符’o’出现了偶数次的最长子字符串的长度。
该算法首先统计字符’o’在环形字符串中出现的次数,然后根据次数的奇偶性确定最长子字符串的长度。如果字符’o’出现了偶数次,那么整个环形字符串都可以作为最长子字符串;如果字符’o’出现了奇数次,需要去掉一个字符’o’以满足出现次数的偶数性质,所以最长子字符串的长度为环形字符串长度减去1。算法的时间复杂度为O(n),其中n为环形字符串的长度。
// 读取输入的环形字符串
const s = readline();
// 将环形字符串转换为字符数组
const arr = s.split('');
// 统计字符'o'的个数
let num = 0;
for (const c of arr) {
if (c === 'o') {
num++;
}
}
// 判断字符'o'出现的次数的奇偶性,并输出最长子字符串的长度
const len = arr.length;
if (num % 2 === 0) {
console.log(len);
} else {
console.log(len - 1);
}
neozhastudyoo
12
包含偶数个的最长的字符串是neozhastudyo,长度为12。
下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路
本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。