分割均衡字符串 - 华为OD统一考试(C卷)
2023-12-13 18:05:49
OD统一考试(C卷)
分值: 100分
题解: Java / Python / C++
题目描述
均衡串定义:字符串只包含两种字符,且两种字符的个数相同。
给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定字符串中只包含大写的’X"和’Y’两种字符。
输入描述
均衡串:XXYYXY
字符串的长度[2,10000]。给定的字符用均为均衡串。
输出描述
可分割为两个子串:
XXYY
XY
示例1
输入
XXYYXY
输出
2
备注
分割后的子串,是原字符串的连续子串。
题解
题目类型:贪心
解题思路:遍历字符串,统计字符’X’和’Y’的数量。当某个字符的数量达到字符串长度的一半时,将结果加1,并将该字符的数量重置为0。
C++
#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin >> s;
int rs = 0,w = 0, cnt = 0;
char C = s[0];
for (int i = 0; i < s.length(); i++) {
w++;
if (C == s[i]) cnt++;
if (cnt > 0 && cnt * 2 == w) {
rs++;
cnt = 0;
w = 0;
}
}
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 rs = 0;
char C = s.charAt(0);
for (int i = 0, w = 0, cnt = 0; i < s.length(); i++) {
w++;
if (C == s.charAt(i)) cnt++;
if (cnt > 0 && cnt * 2 == w) {
rs++;
cnt = 0;
w = 0;
}
}
System.out.println(rs);
}
}
Python
s = input()
rs, w, cnt = 0, 0, 0
for c in s:
w += 1
if s[0] == c:
cnt += 1
if cnt > 0 and cnt * 2 == w:
rs += 1
cnt, w = 0, 0
print(rs)
🙏整理题解不易, 如果有帮助到您,请给点个赞 ???? 和收藏 ?,让更多的人看到。🙏🙏🙏4
文章来源:https://blog.csdn.net/user_longling/article/details/134848288
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!