Codeforces Round #410 (Div. 2)-A - Mike and palindrome

Posted 雪晨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #410 (Div. 2)-A - Mike and palindrome相关的知识,希望对你有一定的参考价值。

题目简述:给定一个字符串判断是否能够恰好改变一个字符使其变成回文(回文:eg.abcba或abccba)。

注意:1,是恰好改变一个字符,恰好!

           2,字符串例如“abc”这样的奇数个数的而且是完整回文的字符串也是可以恰好改变一个字符变成回文的(改变最中间的那个字符,中间的那个字符改成什么都是回文)

我当时就卡死在这个坑。

我的代码是用栈做的虽然有点蠢...当时我都不知道for居然可以放两个入口变量,那样的话i++,j--就成了,我着急直接用栈,我居然不知道栈没有迭代器,也没注意上述注意事项2,结果就gg了。

那种简洁的做法我就不写了。

代码如下:

@font-face { font-family: "Times New Roman"; }@font-face { font-family: "宋体"; }@font-face { font-family: "Calibri"; }p.MsoNormal { margin: 0pt 0pt 0.0001pt; text-align: justify; font-family: Calibri; font-size: 10.5pt; }span.msoIns { text-decoration: underline; color: blue; }span.msoDel { text-decoration: line-through; color: red; }div.Section0 { }

#include<bits/stdc++.h>

using namespace std;

int main(){

stack<char> st;

char c[100];

int d_num;

while(gets(c)){

d_num=0;

if(strlen(c)<1){

cout<<"NO"<<endl;

continue;

}

for(int i=0;i<strlen(c);i++){

st.push(c[i]);

}

for(int i=0;i<strlen(c);i++){

if(c[i]!=st.top())  d_num++;

st.pop();

}

if((strlen(c)%2)&&d_num==0)  d_num+=2;

if(d_num==2)  cout<<"YES"<<endl;

else  cout<<"NO"<<endl;

}

return 0;

}

以上是关于Codeforces Round #410 (Div. 2)-A - Mike and palindrome的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #410 (Div. 2) 解题报告

Codeforces Round #410 (Div. 2)C. Mike and gcd problem(数论)

Codeforces Round #410 (Div. 2)-A - Mike and palindrome

[卿学姐带飞系列]-Codeforces Round #410 (Div. 2)_B - Mike and strings

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)