OpenJudge | 回文串判断

文章目录

总时间限制: 1000ms 内存限制: 65536kB

描述

任意给定一个非空的字符串,判断其是否是回文串。回文串是指正向看和反向看均相等的串,如AbcDcbA和cDDc。如果是回文串,则输出1,否则,输出0

输入

长度不小于1不大于100的字符串

输出

如果是回文串,输出1

如果不是回文串,输出0

样例输入

cpp 复制代码
abcdefghijkjihgfedcba

样例输出

cpp 复制代码
1

思路

方法一:栈思想

将字符串的前半部分入栈,然后遍历后半部分,判断是否和栈顶元素相等。

这里要注意字符串长度为奇数和偶数的情况。

方法二:双指针

设置两个指针,一个指向字符串的头部,一个指向字符串的尾部,判断两个指针指向的字符是否相等。

Code

C

方法二
c 复制代码
#include <stdio.h>
#include <string.h>
int main() {
	char str[9999];
	gets(str);
	for(int i = 0, j = strlen(str)-1; i < j; i++, j--){
		if(str[i] != str[j]) {
			printf("%d", 0);
			goto out;
		}
	}
	printf("%d", 1);
	out:;
}

C++

方法一
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
	string str;
	stack<char> S;
	cin >> str;
	for(long long unsigned int i = 0; i < str.size()/2; i++) {
		S.push(str[i]);
	}
	if(str.size() % 2 == 0) {
		for(long long unsigned int i = str.size()/2; i < str.size(); i++) {
			if(str[i] != S.top()) goto out;
			S.pop();
		}
	} else {
		for(long long unsigned int i = str.size()/2+1; i < str.size(); i++) {
			if(str[i] != S.top()) goto out;
			S.pop();
		}
	}
	cout << 1;
	goto out1;
	out:;
	cout << 0;
	out1:;
}
方法二
cpp 复制代码
#include <bits/stdc++.h>
using namespace std;
int main() {
	string str;
	cin >> str;
	for(int i = 0, j = str.size()-1; i < j; i++, j--){
		if(str[i] != str[j]) {
			cout << 0;
			goto out;
		}
	}
	cout << 1;
	out:;
}
相关推荐
程序员-King.17 分钟前
day158—回溯—全排列(LeetCode-46)
算法·leetcode·深度优先·回溯·递归
优雅的潮叭39 分钟前
c++ 学习笔记之 chrono库
c++·笔记·学习
星火开发设计1 小时前
C++ 数组:一维数组的定义、遍历与常见操作
java·开发语言·数据结构·c++·学习·数组·知识
月挽清风1 小时前
代码随想录第七天:
数据结构·c++·算法
TTGGGFF1 小时前
控制系统建模仿真(一):掌握控制系统设计的 MAD 流程与 MATLAB 基础运算
开发语言·matlab
小O的算法实验室1 小时前
2026年AEI SCI1区TOP,基于改进 IRRT*-D* 算法的森林火灾救援场景下直升机轨迹规划,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
2501_944424121 小时前
Flutter for OpenHarmony游戏集合App实战之贪吃蛇食物生成
android·开发语言·flutter·游戏·harmonyos
小郭团队2 小时前
2_1_七段式SVPWM (经典算法)算法理论与 MATLAB 实现详解
嵌入式硬件·算法·硬件架构·arm·dsp开发
充值修改昵称2 小时前
数据结构基础:从二叉树到多叉树数据结构进阶
数据结构·python·算法