小明最初有一个二进制字符串s(可能长度为0),它可以进行0次或多次以下操作: 加0到字符串的一端,将1加到字符串的另一端,比如: 1011可以操作为:110110,或010111 你得到了小明操作完的结果,请问它原本字符串的最短长度是多少? Input 第一行输入一个整数t,代表测试样例 每组测试样例第一行输入一个整数n,代表字符串长度 每组测试样例第二行输入一个长度为n的二进制字符串,代表最后操作完的字符串。 Output 每组测试输出一个整数,代表原始字符串的最短长度。用c++代码
时间: 2024-04-10 19:30:25 浏览: 79
字符串问题,小明去出差,中间旅游了几次
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
string s;
cin >> s;
int left_zeros = 0, right_ones = 0;
for (int i = 0; i < n; i++) {
if (s[i] == '0') {
left_zeros++;
} else {
break;
}
}
for (int i = n - 1; i >= 0; i--) {
if (s[i] == '1') {
right_ones++;
} else {
break;
}
}
int result = max(left_zeros, right_ones);
cout << result << endl;
}
return 0;
}
阅读全文