题意:一个细胞有三种分裂状态,如果最后形成的新细胞不是由两种的正确的分裂方式形成的,就是变异。给出一个字符串判断是什么分裂状态(四种)。
题解:直接将字符串遍历,两个指针指向头和尾,根据两种分裂情况移动指针,最后判断如果头尾指针相等且等于初始状态就是某种分裂状态,否则就是变异状态。
#include <stdio.h>
#include <string.h>
#include <string>
#include <iostream>
using namespace std;
string str;
int t;
int main() {
scanf("%d", &t);
while (t--) {
cin >> str;
int len = str.size();
int lenn = len;
if (len == 1 && str[0] == 'A') {
printf("SIMPLE\n");
continue;
}
int temp1 = 0, temp2 = len - 1;
while (len > 1) {
if (str[temp2] == 'A' && str[temp1] == 'B') {
temp1++;
temp2--;
len -= 2;
}
else if (str[temp2] == 'B' && str[temp2 - 1] == 'A') {
temp2 -= 2;
len -= 2;
}
else
break;
}
if (len == 1 && str[temp2] == 'A') {
if (str[lenn - 1] == 'B' && str[lenn - 2] == 'A')
printf("FULLY-GROWN\n");
else if (str[0] == 'B' && str[lenn - 1] == 'A')
printf("MUTAGENIC\n");
}
else
printf("MUTANT\n");
}
return 0;
}