题目描述
均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。
给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。
约定:字符串中只包含大写的 X 和 Y 两种字符。
输入描述
输入一个均衡串
- 字符串的长度:[2,10000]。
- 给定的字符串均为均衡字符串
输出描述
输出可分割成新的均衡子串的最大个数。
备注
分割后的子串,是原字符串的连续子串。
用例
输入: XXYYXY
输出: 2
说明: XXYYXY可以分割成2个均衡子串,分别为XXYY、XY
Java 解法:
import java.util.Scanner;
public class BalancedStringSplitter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
int result = balancedStringSplit(s);
System.out.println(result);
}
public static int balancedStringSplit(String s) {
int count = 0;
int balance = 0;
for (char c : s.toCharArray()) {
if (c == 'X') {
balance++;
} else if (c == 'Y') {
balance--;
}
if (balance == 0) {
count++;
}
}
return count;
}
}
Python 解法:
def balancedStringSplit(s):
count = 0
balance = 0
for c in s:
if c == 'X':
balance += 1
elif c == 'Y':
balance -= 1
if balance == 0:
count += 1
return count
if __name__ == "__main__":
s = input("请输入一个均衡字符串: ")
result = balancedStringSplit(s)
print(result)
C++ 解法:
#include <iostream>
#include <string>
int balancedStringSplit(const std::string& s) {
int count = 0;
int balance = 0;
for (char c : s) {
if (c == 'X') {
balance++;
} else if (c == 'Y') {
balance--;
}
if (balance == 0) {
count++;
}
}
return count;
}
int main() {
std::string s;
std::cout << "请输入一个均衡字符串: ";
std::cin >> s;
int result = balancedStringSplit(s);
std::cout << result << std::endl;
return 0;
}
+++==========================================================+++
以上内容仅为个人学习记录使用。
如有转载,请附有原文出处链接。
牛客网原题链接:https://www.nowcoder.com/discuss/633634580129447936?sourceSSR=search
浙公网安备 33010602011771号