愿你坚持不懈,努力进步,进阶成自己理想的人

—— 2017.09, 写给3年后的自己

#牛客编程题#回文字符串

题目描述

给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。
输入描述:

输入包括一行字符串,其长度不超过1000。

输出描述:

可能有多组测试数据,对于每组数据,如果是回文字符串则输出"Yes!”,否则输出"No!"。

输入例子:

hellolleh
helloworld

输出例子:

Yes!
No!

解决思路

使用两个指针,一个指向头部,一个指向尾部,判断指向的字符是否相等,不等则false

#include <iostream>
#include <cstdlib>
using namespace std;

bool isReversible(string str) {
    int length = str.length();
    
    for(int i=0, j=length-1; i<=j; ++i, --j) {
        if(str[i] != str[j]) return false;
    }
    
    return true;
}

int main() {
    string str;
    
    while(getline(cin, str)) {
        if(isReversible(str)) {
            printf("Yes!\n");
        } else {
            printf("No!\n");
        }
    }
}