阿里9.16笔试
一共就ac了1.3,第二题只a了36%,第三题直接0,大火有ac的代码或者可以帮忙看看我第二题的代码嘛
#include <iostream>
using namespace std;
int main() {
int t = 0;
cin >> t;
while (t--) {
int n = 0;
int flag = 0;
cin >> n;
char str1[200000];
char str2[200000];
cin >> str1 >> str2;
for (int i = 0; i < n; ++i) {
// 如果相同位置的元素不相等
if (str1[i] != str2[i]) {
// 如果是开头和结尾的元素不相等,直接输出NO
if (i == 0 || i == n - 1) {
cout << "NO" << endl;
flag = 1;
break;
// 如果前一个元素和后一个元素相等,直接返回NO
} else if (str1[i - 1] == str1[i + 1]) {
cout << "NO" << endl;
flag = 1;
break;
// 如果前一个元素和后一个元素相等,反转当前元素
} else if (str1[i - 1] != str1[i + 1]){
if (str1[i] == '1')
str1[i] = '0';
else
str1[i] = '1';
}
}
}
// 如果跑到了最后,输出YES
if (flag == 0) {
cout << "YES" << endl;
}
}
return 0;
}