首页
编程星球
啊哈磊的小伙伴
求助
交流
添柴
挑战
题库
院校合作
加入圈子
扫码关注啊哈磊
QQ群:703568346
@啊哈编程星球
暑期课程
金牌教练带你玩转编程!
扫码预约课程
未登录
我的添柴
退出账号
搜索
搜索
本版
文章
帖子
用户
啊哈磊_编程从这里起步
»
交流
›
啊哈
›
我也来八一八算法
›
解密回文 栈,有点看不懂,请高手解惑
返回列表
发新帖
查看:
1162
|
回复:
7
解密回文 栈,有点看不懂,请高手解惑
[复制链接]
我就看看
我就看看
当前离线
积分
36
电梯直达
楼主
发表于 2014-9-17 10:59:37
|
只看该作者
|
倒序浏览
|
阅读模式
用栈解密回文那一节,为什么求栈的中心点是mid=strlen(a)/2-1,如果回文是ahaha,那strlen求长度不是5吗,mid=5/2--1的值就是1了,a[mid]怎么会是栈的中心点呢?求高手大大知道的花点时间讲解下........不太懂
楼主新帖
啊哈c实体书怎么才教到数组那一章
菜鸟求大神指教
楼主热帖
啊哈c实体书怎么才教到数组那一章
菜鸟求大神指教
收藏
0
转播
分享
回复
举报
rosynirvana
rosynirvana
当前离线
积分
7454
沙发
发表于 2014-9-17 12:31:12
|
只看该作者
因为“中心点”这个用词不正确
如果字符串长度是奇数,那么中心点是不用判断的,只用判断中心点两边的是否匹配
ahaha这个字符串就是把a h 两个字符入栈,然后从字符串的第四个字符开始验证匹配的
下面有这么一段代码
if(len%2==0)
next=mid+1;
else
next=mid+2;
复制代码
回复
支持
反对
举报
我就看看
我就看看
当前离线
积分
36
板凳
楼主
|
发表于 2014-9-17 12:54:51
|
只看该作者
原来这样啊,涨姿势了!万分感谢
回复
支持
反对
举报
kuaile1210
kuaile1210
当前离线
积分
110
地板
发表于 2014-10-14 12:20:58
来自手机
|
只看该作者
那个2-1是因为字符数组是从0下标开始的吧?所以是0 1
2 3 4 五个空间以len=5为例,5/2等于2,是字符串的正中心,-1是为了让它指向最先入栈的数,对吗?
来自: 微社区
回复
支持
反对
举报
kuaile1210
kuaile1210
当前离线
积分
110
5
#
发表于 2014-10-14 12:29:48
来自手机
|
只看该作者
如果从top等于0的时候就开始使用top的值然后再加加就不用len-1了吧?
来自: 微社区
回复
支持
反对
举报
rosynirvana
rosynirvana
当前离线
积分
7454
6
#
发表于 2014-10-14 13:56:56
|
只看该作者
好吧我举例子仔细解释一遍:
对于长度为奇数的字符串,例如ahaha
strlen("ahaha")得到5,5 / 2的得到2,2 - 1得到1,入栈的数据是 a h
中间点的那个a在判断对称性时候是不需要的,要进行匹配的位置从第二个h开始,mid是第一个h的位置,要跳过中心那个a,所以往后移动两位,总结一下就是
len -> 5
mid -> len / 2 - 1 -> 第一个h的位置
next -> mid + 2 -> 第二个h的位置
回复
支持
反对
举报
kuaile1210
kuaile1210
当前离线
积分
110
7
#
发表于 2014-10-15 20:57:27
|
只看该作者
理解了。谢谢大神
回复
支持
反对
举报
小白_OPpuU
小白_OPpuU
当前离线
积分
4
8
#
发表于 2014-12-24 23:01:41
|
只看该作者
懂了,
回复
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
浏览过的版块
学习求助
啊哈磊’s Blog
资料/作品分享
啊哈C语言教程和编译器
编程星球
广播台
特别关注
快速回复
返回顶部
返回列表