Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >算法:判断字符串是否为回文串的三种方法(递归,循环,使用栈模拟递归)(考研)

算法:判断字符串是否为回文串的三种方法(递归,循环,使用栈模拟递归)(考研)

作者头像
lexingsen
发布于 2022-02-25 00:21:12
发布于 2022-02-25 00:21:12
86700
代码可运行
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
运行总次数:0
代码可运行

一、递归

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool ispalindrome(string s, int i, int j) {
	if (i >= j) return true;
	if (s[i] == s[j]) return ispalindrome(s, i+1, j-1);
	else return false;
}

二、使用栈模拟递归

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool ispalindrome(string s) {
	int n = s.length();
	stack<char> st;
	for (int i=0; i<n; ++i)  st.push(s[i]);
	for (int i=0; i<n/2; ++i) {
		char c = st.top(); st.pop();
		if (s[i] != c) return false;
	}
	return true;
}

三、迭代

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
bool ispalindrome(string s) {
	int n = s.length();
	for (int i=0; i<n/2; ++i) {
		if (s[i] != s[n-1-i]) return false;
	}
	return true;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Basic Calculator 基本计算器-Leetcode
1.题目: Implement a basic calculator to evaluate a simple expression string. The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces . You may assume that the given expression is
老白
2018/03/19
1.2K0
【代码随想录】二刷-栈和队列
栈和队列 232. 用栈实现队列 使用两个栈来模拟队列,stIn用来输入,stOut用来输出。 push: 直接将元素push进stIn pop: 将stIn中的元素导入stOut,再由stOut上pop出来。如果stOut()非空,直接从stOut中取,否则先从stIn中push进stOut。 peek: 复用pop,取出第一个,然后再push进stOut。 empty: 元素分开存储在stIn和stOut两个栈中,所以要同时判断是否为空。 补充: 实际开发中,一定要懂得复用,功能相近的函数
半生瓜的blog
2023/05/13
2130
【代码随想录】二刷-栈和队列
算法沉淀——栈
栈本质上是一个比较简单的容器,算法题里有直接考察栈的先进后出的特性,也有跟其他算法相结合,还是挺有意思的,难度也适中
用户11316056
2024/10/16
700
【C++】了解设计模式,模拟实现栈和队列
设计模式有很多种,根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。
平凡的人1
2023/10/15
2380
【C++】了解设计模式,模拟实现栈和队列
【笔试题】迈入offer的新大门
对规定符合区域范围内的数据进行遍历,对每个数据的每一位进行判断是否为2,若为2则count++,最后打印count即可。
熬夜学编程的小王
2024/11/20
520
【笔试题】迈入offer的新大门
匹配问题都是栈的强项!
https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
代码随想录
2021/07/16
4860
C、Grid game 【 Codeforces Round #534 (Div. 2) 】
题意:给你一个4 × 4 的方格,然后给你一些1 × 2 或者 2 × 1的小方格,当这些方格在一行或者一列的时候会消除掉,问最佳放置位置。
Lokinli
2023/03/09
2190
【LeetCode每日一题】173. 二叉搜索树迭代器
实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于 BST 中的数字,且该数字小于 BST 中的任何元素。boolean hasNext() 如果向指针右侧遍历存在数字,则返回 true ;否则返回 false 。int next()将指针向右移动,然后返回指针处的数字。注意,指针初始化为一个不存在于 BST 中的数字,所以对 next() 的首次调用将返回 BST 中的最小元素。
公众号guangcity
2021/03/30
5860
中缀表达式转后缀表达式以及计算后缀表达式的值(C++)
1.中缀转后缀的要点 (1)遇到数字需要直接输出,但是有时数字可能不只是一个个位数,因此需要遍历表达式,获取该值。 (2)如果运算符栈为空,如果遇到运算符,直接入栈。 (3)如果遇到"(",直接入栈。 (4)如果遇到")",连续出栈,一直到栈顶元素是"(",然后出栈"("。 (5)如果遇到运算符且运算符栈不为空,此时需要比较当前运算符和栈顶运算符的优先级。分两种情况:1.当前运算符优先级大于栈顶运算符优先级,直接入栈。2.当前运算符优先小于栈顶运算符优先级,需要一直出栈,直到栈顶运算符优先小于当前运算符,将当前运算符入栈。
lexingsen
2022/02/24
1.3K0
使用STL标准库解决之前三个问题
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:使用STL标准库解决之前三个问题
废江_小江
2022/09/05
1800
LeetCode | 844. 比较含退格的字符串
这道题目是要进行向前的消除,当满足条件时,除了消除当前的字符,也会消除当前字符之前的字符,此时可以使用栈结构来进行操作。时间复杂度和空间复杂度,都为O(N)。
码农UP2U
2021/04/26
6830
LeetCode | 844. 比较含退格的字符串
系统中处处都是栈的应用
https://leetcode-cn.com/problems/valid-parentheses/
代码随想录
2021/07/16
3890
有效的括号
栈的解法(非哈希表解法) #include<iostream> #include<stack> #include<string> using namespace std; class Solution { public: bool isValid(string s) { //获取字符串的个数 int n = s.length(); if (n == 0) return false; //如果
大忽悠爱学习
2022/05/05
2510
有效的括号
Leetcode 20 Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not. 括号匹配,书上讲栈应用的一个实例,新来的和栈顶元
triplebee
2018/01/12
5270
九十五、二叉树的递归和非递归的遍历算法模板
刷Leetcode,需要知道一定的算法模板,本次先总结下二叉树的递归和非递归的遍历算法模板。
润森
2022/08/18
4430
二叉树经典题题解(超全题目)(力扣)
题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/
用户11039529
2024/03/25
3070
125 验证回文串
首先判断两个字符串是否是回文串,就是原串与倒序是否相等,那不就是前面写的反转字符串么。只不过就是首尾交换,换成首尾是否相等。但在此之前我们先要从原串中获取数字字母串并忽略大小写
木瓜煲鸡脚
2021/01/18
4700
125 验证回文串
前缀表达式(波兰表达式)的计算
波兰表达式也称之为前缀表达式,即运算符放置于操作数之前。 计算波兰表达式的值的方法: (1)从后往前遍历表达式。 (2)遇到数字直接入栈。 (3)遇到运算符,取出两个数字,第一个作为操作数,第二作为被操作数,执行相应的运算。将运算的结果继续入栈。 (4)当表达式遍历完时,此时栈顶元素即为计算结果。
lexingsen
2022/02/24
6720
HDU 1022(关于栈的详细解法)
思路:那么我们用栈来解决这个问题,无非是入栈,出栈。那么我们先压入出栈序列的第一个元素,然后我们就需要要进行判断了。如果栈中元素等于预想出栈序列的头元素,那么就弹出栈中当前元素,(这个还需要记录出栈还是入栈,因为最后要打印,所以我们首先开一个布尔数组1代表入栈,0代表出栈),记录出栈,不相等那么就继续从入栈序列中继续压入元素,记录入栈。 后面的就是控制输出跟清栈了。
杨鹏伟
2020/09/11
2960
搞定大厂算法面试之leetcode精讲20.字符串
方法1.截取字符串,循环字符串,遇到#就截掉最后一个字符,循环完毕之后,最后比较两个去除掉#退格之后的字符串是否相等,时间复杂度O(m+n),m、n是两个字符串的长度。空间复杂度O(1)
全栈潇晨
2021/12/04
7040
推荐阅读
相关推荐
Basic Calculator 基本计算器-Leetcode
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文