第四题
思路
1、问什么:给你一个串,看看符不符合他的要求,即串的合法性
2、怎么解:我们不难发现,这个题有很多的失败情况,但是只针对一个字符而言,正确的情况很少
3、只要这个点处输入的是正确的就可以继续走反之这个串必不合法
4、再结合"3"中所说,所以只需要判断正确情况就行,不满足一定出错
这也是以后编代码的一种思路,我们只需要判断条件少的部分,不满足的那些自然就全属于对立面了,这样会让编程简化,我们只处理少的判断即可!!!
代码
#include <iostream>
#include <string>
#include <stack>
#include <queue>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
void function_one() {
void function_four() {
string item;
cin >> item;
int n = item.size();
int i = 0;
int turn = 1;//1代表机器人1 -1代表机器人2
while (i < n) {//这道题正确情况少,错误情况多,所以每次判断到一个字符,只需要看它符不符合正确情况的定义即可,余下的必错
if (turn == 1 && i + 1 < n && (item[i] == 'Y' || item[i] == 'N')) {//M1说话,说的是Y或N才行,并且不能是对话结尾
i++;
continue;
}
if (turn == -1 && i + 1 < n && (item[i] == 'y' || item[i] == 'n')) {//M2说话,说的是y或n才行,并且不能是对话结尾
i++;
continue;
}
if (turn == 1 && item[i] == '2') {//M1说话,说的是数字必须是2,如果是结尾,也必须到这里看看是不是数字
turn *= -1;//交换说话次序
i++;
continue;
}
if (turn == -1 && item[i] == '1') {//M1说话,说的是数字必须是1,如果是结尾,也必须到这里看看是不是数字
turn *= -1;//交换说话次序
i++;
continue;
}
cout << "该串不合法";//所有的错误情况,有一处错了就必然不是合法串
return;
}
cout << "该串合法";
return;
}