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

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

作者头像
lexingsen
发布于 2022-02-25 00:21:12
发布于 2022-02-25 00:21:12
93200
代码可运行
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客
运行总次数: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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
算法学习笔记-栈(stack)
这题跟上面的题目是一模一样的,最少添加就是有多少括号没有对象,,没有对象的括号都会留在栈中,有的都会出栈,所以就是求栈的大小;
买唯送忧
2021/05/23
4250
【LeetCode 热题 100】有效的括号 / 最小栈 / 字符串解码 / 柱状图中最大的矩形
_小羊_
2025/05/21
470
【LeetCode 热题 100】有效的括号 / 最小栈 / 字符串解码 / 柱状图中最大的矩形
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
算法思想总结:栈
我们平时看到的 1+2*(3-4*5)+6/7 叫做中缀表达式,平时我们习惯用这个计算的原因是我们可以整体地去看到这个表达式并且清楚地知道各个运算符的优先级,但是计算机并不一定知道,因为他总是从前往后去遍历这个表达式。如上面这个例子,当按照计算机的逻辑去扫描了1+2的时候,并不敢直接去进行运算,因为可能后面存在一个优先级更高的操作符会优先进行计算。甚至有些时候还会出现括号这一种可以改变操作符优先级的符号!!所以这个时候,为了能够解决这个问题,就有了波兰表达式(前缀表达式)和逆波兰表达式(后缀表达式)。
小陈在拼命
2024/04/23
1130
算法思想总结:栈
【代码随想录】二刷-栈和队列
栈和队列 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
2180
【代码随想录】二刷-栈和队列
算法沉淀——栈
栈本质上是一个比较简单的容器,算法题里有直接考察栈的先进后出的特性,也有跟其他算法相结合,还是挺有意思的,难度也适中
用户11316056
2024/10/16
810
【栈数据结构应用解析:常见算法题详细解答】—— Leetcode
用户11286421
2025/03/15
1060
【栈数据结构应用解析:常见算法题详细解答】—— Leetcode
算法:字符串
在示例代码中,str是一个字符串的变量名称,hello world则是该字符串的值,字符串的长度为11,该字符串的表示如下图所示:
用户3578099
2022/03/15
2.9K0
算法:字符串
【C++】了解设计模式,模拟实现栈和队列
设计模式有很多种,根据设计模式的参考书 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 中所提到的,总共有 23 种设计模式。
平凡的人1
2023/10/15
2460
【C++】了解设计模式,模拟实现栈和队列
【笔试题】迈入offer的新大门
对规定符合区域范围内的数据进行遍历,对每个数据的每一位进行判断是否为2,若为2则count++,最后打印count即可。
熬夜学编程的小王
2024/11/20
640
【笔试题】迈入offer的新大门
【C++篇】从装书到抽书:用C++模拟实现“栈”的妙趣演绎
在日常生活中,我们经常会接触到一些具有“后进先出”特性的场景,例如堆叠书本、餐具摞放、撤销操作等。这些行为背后都暗含着栈(Stack)这一经典的数据结构概念。在程序设计中,栈以其操作简单、逻辑清晰的特点,广泛应用于表达式求值、括号匹配、递归调用等问题。
熬夜学编程的小王
2024/11/25
1240
匹配问题都是栈的强项!
https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/
代码随想录
2021/07/16
5080
《代码随想录》笔记
O(1)常数阶 < O( log n)对数阶 < O(n)线性阶 < O(n log n)线性对数阶 < O(n^2)平方阶 < O(n^3)立方阶 < O(2^n)指数阶
LucianaiB
2025/05/28
1030
【leetcode】Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
阳光岛主
2019/02/19
3550
C、Grid game 【 Codeforces Round #534 (Div. 2) 】
题意:给你一个4 × 4 的方格,然后给你一些1 × 2 或者 2 × 1的小方格,当这些方格在一行或者一列的时候会消除掉,问最佳放置位置。
Lokinli
2023/03/09
2240
【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
6050
中缀表达式转后缀表达式以及计算后缀表达式的值(C++)
1.中缀转后缀的要点 (1)遇到数字需要直接输出,但是有时数字可能不只是一个个位数,因此需要遍历表达式,获取该值。 (2)如果运算符栈为空,如果遇到运算符,直接入栈。 (3)如果遇到"(",直接入栈。 (4)如果遇到")",连续出栈,一直到栈顶元素是"(",然后出栈"("。 (5)如果遇到运算符且运算符栈不为空,此时需要比较当前运算符和栈顶运算符的优先级。分两种情况:1.当前运算符优先级大于栈顶运算符优先级,直接入栈。2.当前运算符优先小于栈顶运算符优先级,需要一直出栈,直到栈顶运算符优先小于当前运算符,将当前运算符入栈。
lexingsen
2022/02/24
1.4K0
【LeetCode】 有效的括号
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
韩旭051
2020/06/28
3480
使用STL标准库解决之前三个问题
废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:使用STL标准库解决之前三个问题
废江_小江
2022/09/05
1870
LeetCode | 844. 比较含退格的字符串
这道题目是要进行向前的消除,当满足条件时,除了消除当前的字符,也会消除当前字符之前的字符,此时可以使用栈结构来进行操作。时间复杂度和空间复杂度,都为O(N)。
码农UP2U
2021/04/26
7040
LeetCode | 844. 比较含退格的字符串
推荐阅读
相关推荐
算法学习笔记-栈(stack)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验