Raptor-回文字符串判断

27 篇文章 26 订阅
订阅专栏

1. 题目描述

输入一个字符串,判断其是否是回文。回文是正向拼写与反向拼写都一样的字符串。例如:"abcba"和"abccba"都是回文。

2. 算法分析

我们在Raptor中输入字符串,记为 s,在Raptor中,字符串 s 是以字符数组的形式存在,我们可以利用数组对回文字符串进行判断。

比如字符数组 s = "abcdeedcba",这个数组的长度也即末端索引位置可以用自带函数 length_of 来获取。我们定义两个循环变量 i 和 j,其中 i 记录起始索引的位置,初始值 i=1;j 记录末端索引的位置,初始值 j=length_of(s)。利用循环,从两头向中间逼近,依次判断 s[i] 和 s[j] 是否相等。如果一直到 i>=j 时, s[i] 和 s[j] 仍然相等,说明这个字符串就是回文字符串;如果中间某一步 s[i]=s[j] 不成立,那么退出循环,最后 i 必然小于 j。

这样,循环结束的条件可以设为满足 i>=j or s[i] != s[j],其中 i>=j 是回文结束的条件,s[i]!=s[j]是非回文结束的条件。(这里的 != 表示不等于)

举两个例子:

2.1 回文字符串例子s = "abcdeedcba"

初始值 i=1, j=length_of(s)=10

  • s[i]= 'a', s[j]='a', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=2, j=9);
  • s[i]= 'b', s[j]='b', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=3, j=8);
  • s[i]= 'c', s[j]='c', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=4, j=7);
  • s[i]= 'd', s[j]='d', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=5, j=6);
  • s[i]= 'e', s[j]='e', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=6, j=5);
  • s[i]='e', s[j]='e',满足 i>=j or s[i] != s[j],循环结束。

此时 i>=j,字符串 s 是回文字符串。

2.2 非回文字符串例子 s="abceba"

初始值 i=1, j=length_of(s)=6

  • s[i]= 'a', s[j]='a', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=2, j=5);
  • s[i]= 'b', s[j]='b', 不满足 i>=j or s[i] != s[j],此时执行 i=i+1, j=j-1 (这时 i=3, j=4);
  • s[i]= 'c', s[j]='e', 满足 i>=j or s[i] != s[j],循环结束。

流程结束,此时不满足 i>=j,字符串 s 不是回文字符串。

3. 流程图

 

4.测试结果

4.1 回文字符串例子s = "abcdeedcba"

 

4.2 非回文字符串例子 s="abceba"

5. 特殊说明 (回文数字判断)

本题中的程序仅用于判断字符串是否回文,无法判断数字是否回文,为什么呢?因为Raptor对于输入框中的内容,如果仅为数字,不包含除了数字之外的其它字符,则当做数字处理。这时,如果我们直接用本程序,就会出现如下错误 "s is not a 1D array",这时s仅为一个数字,不是一维数组,无法进行数组索引操作。

如果输出框中包含除数字之外的其它字符,那么这个输入就会被当做一个字符串,这样,我们可以借助特殊字符包裹数字,进行回文数的判断。例如我们在数字两边加上 "#",输入变成 #123321#,就可以利用回文字符串的程序来判断数字是否为回文数了,如下:

 当然,这里的特殊符号可以任意取,只要包裹在输入数字两边的一样就可以了。回文数判断相当于拓展自回文字符串判断,需要在输入数字的两边加上特殊符号,以形成字符串。下一篇博客我们将聚焦回文数判断,发展针对数字的回文数判断程序。

 

 

python判断一个数的奇偶性_判断奇数或偶数的算法
weixin_39639514的博客
12-20 2434
采用python实现两种奇偶判断的算法,并评估算法性能。算法原理:1、按位与判断二进制数个位数,如为0则是偶数,为1则是奇数。2、求余除以2,如果余数为0则是偶数,为1则是奇数。性能评估:按位与法的性能优于求余法。结果1:(计算100万个数的奇偶性)input a number:1000000按位与法:0.148009求余法:0.193011结果2:(计算1亿个数的奇偶性)input a numb...
raptor-query
06-08
环境变量RAPTOR_HOST 指示 raptor-influxdb 位置RAPTOR_PORT 到 raptor-influxdb 的连接端口。 默认端口为 8086。RAPTOR_USERNAME 连接 influxdb 服务器的用户名RAPTOR_PASSWORD 连接 influxdb 服务器的密码RAPTOR_...
Raptor-判断
qq_30252385的博客
01-03 3548
​ 1. 题目描述 输入一个数字,判断其是否是数。数是正向拼写与反向拼写都一样的数字。例如:121 和 1234554321 都是数。 2. 算法分析 前一篇博客Raptor-字符串判断在最后给出了如何利用字符串判断程序来判断数字是否为数,但是需要在原始输入数字中加入特殊符号,以便形成字符串。本篇博客将介绍基于数组的数字判断,无需在原始输入中加入特殊符号以形成字符串。 核心思路两部分: 1)首先通过数字分解,将数字存储在数组中(参考博客Raptor-数字分解);
第10周项目2 <1> 判断
越努力,越幸运!!!
11-06 492
问题及代码: #include #include int main() { long long m,n,s; scanf("%lld",&n); s=n; m=0; while (s>0) { m=m*10+s%10; s=s/10; } if (m==n) p
十五周—判断 字符
TP1624087632的博客
12-09 338
问题与代码: 件名称:输入字符串判断字符串是否。 作者:邓哲 时间:2016年12月9日16:45:53 #include #include int main() { char a[20]; int len,i,sum=0; gets(a); len=strlen(a); if((len%2)==0) { for(
表达式,判断奇偶数
ztt0918的博客
05-28 1587
html> html lang="en"> head> meta charset="UTF-8"> title>title> script type="text/javascript"> var num=parseInt(prompt('请输入一个数字')); alert(num/2==0?'该数是偶数':'该数是奇数') scr
Raptor-2016软件安装包
01-02
它可以为程序和算法设计的基础课程的教学提供实验环境。
raptor-build
06-28
如果您有 Apache 或其他服务器,并且raptor-build目录在您的档根目录中,则您可以运行这些示例。 否则,您可以在内置服务器中使用 PHP(较慢): bin/server 然后在浏览器中打开以下 URL: ...
raptor-files:猛禽
03-10
raptor-files:猛禽
raptor-chess-interface
05-24
Raptor是一个跨平台的国际象棋界面和免费Internet国际象棋服务器的pgn查看器:[ FICS]。 从Google Code移至 Raptor存储库已从Google Code( )移至GitHub。 现在,请查阅原始站点上的档。 所做的更改是构建过程:...
第五周 项目一(7)判断N并计算(Raptor)
Jay·Weany
09-29 1246
Copyright (c) 2016,烟台大学计算机与控制学院   All ringts reserved.   件名称:判断N并计算 作        者:王兴振   完成日期:2016年9月28日   版 本 号:未知      题目描述:    输入任意整数N,当N小于或等于0时显示"Error!",否则计算并显示1+3+5+...... +(2*N-1)的值。 例1:
7-2 判断偶数
玖月的博客
05-08 1570
输入格式: 直接输入一个正整数,没有其他任何附加字符。 输出格式: 直接输出yes或no,没有其他任何附加字符。 样例">输入样例: 2 输出样例: yes 输入样例: 1 输出样例: no #include<stdio.h> #include<math.h> int main() { int x; scanf("%d",&x); if(abs(x%2==0)) printf("yes"); else printf
Raptor-阶乘的两种实现方法
热门推荐
qq_30252385的博客
11-30 4万+
1.问题描述n的阶乘定义为n*(n-1)*(n-2)*…*3*2*1,记为n!。请编写程序计算一个数的阶乘(特殊的 0!=1) 2.思路分析这道题有两种方法,这两种方法源于对这个阶乘定义的使用,下面我们来看看差别。a) 递归调用的方法这种方法是利用了阶乘这个定义的自身,我们假定f(n)是求n的阶乘的一个函数关系,f(n-1)就是求(n-1)!,…,f(1)就是求1!,
Raptor中生成任意范围的随机数
qq_30252385的博客
11-30 3万+
1.问题背景在Raptor中,有时候我们需要一些指定范围的随机数,但是我们从Raptor帮助件中可以发现,random产生[0,1)之间的随机数,这显然是不能满足需要的,所以本篇教学探讨怎么生成任意范围的随机数。 帮助件中的random函数介绍: 2.实现原理本篇教学讨论生成[a,b)(b>a)区间上的均匀分布的随机数 Raptor中的random产生一个[0,1)区间上均匀分布的随
Raptor-冒泡排序法
qq_30252385的博客
12-25 3万+
1.问题描述对20个20到100范围的随机整数进行从小到大排序操作(使用冒泡排序法)2.问题思路 首先,20个数据我们需要用一维数组来进行数据存储 其次,我们要让每个数据在20到100之间,并且是整数,这就涉及到了任意范围随机数的生成问题,具体可以看我之前博客里面Raptor中生成任意范围随机数那一部分 然后,我们需要用冒泡排序法进行排序操作(关键步骤,本篇教学内容) 最后,我们需要注意一下数据的展
Raptor-素数判断/质数判断
qq_30252385的博客
11-30 2万+
在Raptor的某些问题中,会有判断素数或者找出某一区间范围内的素数,这样的问题比较多,因此本篇内容讲解怎么判断一个数是不是素数 定义:质数(prime number)又称素数,质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。如果一个数有除了1和自身的其他因子就被称为合数。 因为素数判断用到的比较多,所以我们从方便的角度定义一个素数判断的子程序isPri
Raptor-数字逆序输出(递归法)
qq_30252385的博客
12-01 2万+
数字逆序输出 :任意输入一个正整数,逆序输出这个数字 例如: input = 123,output分别为3,2,1.
Raptor-数字正序输出(递归法)
qq_30252385的博客
11-14 2万+
数字正序输出 问题:任意输入一个整数,从高位到低位逐个输出每一位(正序输出) 例如: input = 123,output 分别为1,2,3 
raptor-冒泡排序法
最新发布
12-13
以下是raptor中冒泡排序法的实现: ``` // 输入待排序数组 input a[10] // 冒泡排序 for i from 0 to 8 do for j from 0 to 8-i do if a[j] > a[j+1] then // 交换相邻两个元素 swap a[j], a[j+1] end if end for end for // 输出排序后的数组 output a[10] ``` 以上代码实现了对一个长度为10的数组进行冒泡排序,其中`input`和`output`分别表示输入和输出,`swap`表示交换两个元素的值。在raptor中,数组下标从0开始,因此循环的范围是从0到8。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Raptor-阶乘的两种实现方法 42403
  • Raptor中生成任意范围的随机数 35033
  • Raptor-冒泡排序法 32306
  • PTA-特殊a串数列求和 30317
  • PTA-求二维数组中的最大值和最小值 28856

分类专栏

  • 机器学习 1篇
  • 大数据 1篇
  • Raptor 27篇
  • C 31篇
  • MATLAB
  • 算法 20篇
  • C++ 9篇
  • PTA 30篇
  • python 1篇

最新评论

  • PTA-幂级数展开的部分和

    2401_84586811: item一直在变

  • PTA-求给定精度的简单交错序列部分和

    桦林子: double类型经常会出现精度问题,我自己跑代码发现使用“1.0/i<=n”和“1.0/i>n”分别作为判断的条件,发现得到的结果不同,可能是double类型进行比较不安全吧,以后碰到这种情况两种判断条件都试试咯

  • PTA-猜数字游戏

    栀蓝607: 为什么不能用for循环呢

  • PTA-输出N以内的所有素数

    721月127: 为啥i是2

  • Raptor-素数判断/质数判断

    2301_81905779: 如何求两个数之间的素数和呢

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • Raptor-水仙花数
  • Raptor-回文数判断
  • Raptor-数字分解
2022年4篇
2021年8篇
2020年2篇
2019年21篇
2018年14篇
2017年11篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏雪无痕是个小疯子

您的鼓励将促使我的创作更有价值

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

聚圣源异国色恋浪漫谭1洗浴中心起名名扬环宇宝宝起名软件店铺起名测分的康熙字典起名字大全科技健康公司起名宋词起名 女孩姓名大全吉林农村信用社mm131美女图片高清美女图片临汾起名馆哪里给宝宝起名姓罗的cctv-1在线观看黄仁起名工商个体户怎么起名建筑公司起名三个字大全参考相位是什么王爷太妖孽绝宠世子妃交友网站哪个好单田芳评书隋唐演义十种人不能吃樱桃失控玩家百度云翁姓起名大全生辰八字五行起名 免费傅姓起什么名字好听初一拜年男孩起名诗文拳皇全集下载个人工作室起名字宝宝起名刘夜980元靠谱积玉桥万达广场淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻让美丽中国“从细节出发”清明节放假3天调休1天男孩疑遭霸凌 家长讨说法被踢出群国产伟哥去年销售近13亿网友建议重庆地铁不准乘客携带菜筐雅江山火三名扑火人员牺牲系谣言代拍被何赛飞拿着魔杖追着打月嫂回应掌掴婴儿是在赶虫子山西高速一大巴发生事故 已致13死高中生被打伤下体休学 邯郸通报李梦为奥运任务婉拒WNBA邀请19岁小伙救下5人后溺亡 多方发声王树国3次鞠躬告别西交大师生单亲妈妈陷入热恋 14岁儿子报警315晚会后胖东来又人满为患了倪萍分享减重40斤方法王楚钦登顶三项第一今日春分两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?周杰伦一审败诉网易房客欠租失踪 房东直发愁男子持台球杆殴打2名女店员被抓男子被猫抓伤后确诊“猫抓病”“重生之我在北大当嫡校长”槽头肉企业被曝光前生意红火男孩8年未见母亲被告知被遗忘恒大被罚41.75亿到底怎么缴网友洛杉矶偶遇贾玲杨倩无缘巴黎奥运张立群任西安交通大学校长黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发妈妈回应孩子在校撞护栏坠楼考生莫言也上北大硕士复试名单了韩国首次吊销离岗医生执照奥巴马现身唐宁街 黑色着装引猜测沈阳一轿车冲入人行道致3死2伤阿根廷将发行1万与2万面值的纸币外国人感慨凌晨的中国很安全男子被流浪猫绊倒 投喂者赔24万手机成瘾是影响睡眠质量重要因素春分“立蛋”成功率更高?胖东来员工每周单休无小长假“开封王婆”爆火:促成四五十对专家建议不必谈骨泥色变浙江一高校内汽车冲撞行人 多人受伤许家印被限制高消费

聚圣源 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化