题目描述
输入一个字符串,输出该字符串是否回文。回文是指顺读和倒读都一样的字符串。
题目链接:B2124 判断字符串是否为回文 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
输入格式
输入一行字符串,长度小于 100100。
输出格式
如果字符串是回文,输出 yes
;否则,输出 no
。
解题思路
我们根据字符串从头依次遍历,并判断前后对应位置的字符是否相等,如果不相等用flag记录并输出结果
解题代码
C代码
include<stdio.h>
#include<string.h>
int main(){
char str[101];
scanf("%s",&str);
int len = strlen(str);
for(int i = 0; i < len/2; i++){
if(str[i] != str[len-1-i])//前后相比
{
printf("no");
return 0;
}
}
printf("yes");
return 0;
}
C++代码
#include<iostream>
using namespace std;
int main()
{
string str;
cin>>str;
int i = 0,j = str.size()-1; //从数组的两头分别向里面判断
bool flag = true; //标记是否是回文数组
while(i < j){
if(str[i] != str[j]){ //只有两边不相等则不是回文数组
flag = false;
break;
}
i++,j--;
}
if(flag) cout<<"yes";
else cout<<"no";
return 0;
}
Java代码
//导包
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//输入数据
Scanner scanner = new Scanner(System.in);
String str = scanner.next();
//遍历字符串并判断
boolean flag = true;//用来记录该字符串是否为回文,如果是用真表示,不是用假表示
for (int i = 0; i < str.length(); i++){
if(str.charAt(i) != str.charAt(str.length() - 1 - i)){
flag = false;//如果前后不一样,表示不是回文
}
}
//输出结果
if(flag) System.out.println("yes");
else System.out.println("no");
}
}