文章
17
粉丝
177
获赞
2
访问
118.8k
#include<iostream>
#include<queue>
using namespace std;
int main(){
string s;
queue<int> que; //编号队列
cin >> s;
bool result = true;
if(s[0]!= '#') que.push(0);
while(!que.empty()){
int size = que.size();
string temp; // 接住每层构成的字符串
for(int i = 0;i < size;i++){
int index = que.front();
que.pop();
if(s[index] != '#') temp.push_back('A');//对不是'#'的字符都统一成一个字符
else temp.push_back('#');
if(2 * index + 1 < s.size()) que.push(2 * index + 1);
if(2 * index + 2 < s.size()) que.push(2 * index + 2);
}
//对称性判断,不对称直接退出循环
int i;
for(i = 0;i < temp.size() / 2;i++)
if(temp[i] != temp[temp.size() - 1 - i]) break;
if(i != temp.size() / 2) {result = false; break;}
}
if(result) cout << "YES" << endl;
else cout << "NO" << endl;
}
登录后发布评论
暂无评论,来抢沙发