題目描述
均衡串定義:字串中只包含兩種字元,且這兩種字元的個數相同。
給定一個均衡字串,請給出可分割成新的均衡子串的最大個數。
約定:字串中只包含大寫的 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