蒟蒻的首篇题解——Mother bear
题目大意:一只笨熊只可以理解回文的句子,要你判断句子去掉标点符号、空格后是否回文。
思路:
1、利用 getline()
读入整行字符串,并且处理成只有小写/大写字母和数字的字符串。(样例处理结果对照详见①~②分割线内)
2、读取到一半必定会出现倒着的(针对于前面的倒着的)字符串,如果没有就不是回文的。(此处应该按照修改后的总长度奇偶区别,本蒟蒻只能想到这种笨方法)
------------①分割线------------
初始:Madam, Im adam!
修改:madamImadam (回文)
初始:Roma tibi subito motibus ibit amor.
修改:romatibisubitomotibusibitamor (回文)
初始:Me so hungry!
修改:mesohungry
初始:Si nummi immunis
修改:sinummiimmunis (回文)
------------②分割线(AC代码)------------
#include<bits/stdc++.h>
using namespace std;
bool huiwenpd(string A) {//判断回文
for (int i = 0; i <= A.size() / 2; i++) {
if (A[i] != A[A.size() - i - 1]) {
return 0;
}
}
return 1;
}
string a, b; //a为处理前的字符串,b为修改好的字符串
int main() {
while (1) {
b = ""; //b最开始为空串
getline(cin, a); //带空格读入一行
if(a=="DONE"){
return 0;
}
for (int i = 0; i < a.size(); i++) {
if ((a[i] >= 'a' && a[i] <= 'z') || a[i] >= '0' && a[i] <= '9') {//小写/数字直接加入加入修改字符串
b += a[i]; //加入修改字符串
} else if (a[i] >= 'A' && a[i] <= 'Z') { //大写转小写后加入修改字符串
b += (a[i] + 32);
}
}
if(huiwenpd(b)==1){//回文
cout<<"You won't be eaten!"<<endl;
}else{//不是回文
cout<<"Uh oh.."<<endl;
}
}
return 0;
}
标签:UVA10945,bear,------------,&&,Mother,分割线,回文
From: https://www.cnblogs.com/h-rk/p/17850225.html