c语言中strrchar函数判断字符串是否为回文

c++判断字符串是否为回文_中华文本库
C++回文判断_文学_高等教育_教育专区。C++源代码[问题描述] 问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即正反序相同。如“abba”是回文,而“...
[问题描述] 对于一个从键盘输入的字符串,判断其是否为回文。回文即 正反序相同。如“abba”是回文,而“abab”不是回文。 [基本要求](1)数据从键盘读入; (2)...
同济C++实验答案_计算机软件及应用_IT/计算机_专业资料。实验6: 1.编一判断m...} } } 3.编一函数,功能为判断一字符串是否为回文,如果是回文则返回1,否则...
C++经典编程练习题_IT认证_资格考试/认证_教育专区。C++经典练习,适合入门。。。...输入字符串,判断此字符串是否为回文,如&abcd&,正数为&abcd&,反数为&dcba&,...
实验-回文判断 暂无评价 2页 1财富值 实验9 回文字符串的判断 2页 免费 ...实验一 回文判断(已通过C++6.0) 利用栈与队列实现回文判断,元素入栈同时入队,出...
数据结构C语言回文判断(运用栈以及队列完成)_IT/计算机_专业资料。数据结构C语言...回文序列即正读与反读都一样的字符序列; 例如:123&321@是; 123&4321@、123...
C++上机作业答案_电脑基础知识_IT/计算机_专业资料。第一章作业答案. 1. 编写...判断 s 所指字符串是否为“回文串”, 即前后对称。如 abcba 为回文串,若是...
给定一个字符串,求这个字符串的最大回文数_计算机软件及应用_IT/计算机_专业资料。C++ 字符串题目:回文判断是一类典型的问题,尤其是与字符串结合后呈现出多姿多彩...
大学C++课实践编程题、答案和运行结果大学C++课实践编程题、答案和运行结果隐藏&...六一、实践任务 6.定义一个字符串类 String,实现判断该字符串是否为回文字符串...
实验条件:一台装有 V C++ 6.0 的计算机。 实验内容与算法思想: 内容: 称正读与反读都相同的字符序列为“回文” 。编写程序,判断输入的字符串是 否为回文。 ...Java采用3种方式判断用户输入的字符串是否为回文_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Java采用3种方式判断用户输入的字符串是否为回文
来源:Linux社区&
作者:tongyuehong
回文的定义:"回文数" 就是正读倒读都一样的整数。如奇数个数字:98789, 这个数字正读是98789,倒读也是98789;偶数个数字3223也是回文数。
我们今天将回文数扩展为字母和数字组合回文,如adgu6776ugda也是回文,我们采用三种方式判断这种类型的字符串是否为回文:
1.调用StringBuffer类对象的reverse()方法,将字符串翻转后与之前的字符串比较,如果相等则为回文,反之亦然;
2.采用low和high两个变量分别对应字符串对称位置的index,所有对称位置的字符都相等则为回文,反之亦然;
3.使用一个变量i来表示字符串的下标,找出对称位置的index关系来判断字符串是否为回文。
二、源代码
import java.util.Simport javax.swing.JOptionP
/**&* 回文描述:正着读过去和倒着读回来的字符串序列相同则为回文,如:1h3gkg3h1是回文&* @author tong&*&*/public class PalindromeIgnoreNonAlphanumeric {& & public static void main(String[] args) {& & &//可以使用javax.swing.JOptionPane类中的showInputDialog()方法提示用户输入字母或者数字串& & & & String s = JOptionPane.showInputDialog("请输入输入字符串:");& & & & & //调用isPalindromeByBuffer()方法& & & & String output = s + (isPalindromeByBuffer(s)?"是":"不是")+"回文。";& & & & JOptionPane.showMessageDialog(null, output);& & & & & & & & s = JOptionPane.showInputDialog("请输入输入字符串:");& & & & //调用isPalindromeByCharAt()方法& & & & output = s + (isPalindromeByCharAt(s)?"是":"不是")+"回文。";& & &
& & & & JOptionPane.showMessageDialog(null, output);& & & & & & & & //使用Scanner(System.in)方法提示用户输入字符串& System.out.println("请输入输入字符串:");& Scanner in=new Scanner(System.in);& String strOrigin=in.next();&& //调用isPalindromeByCharAtSingle()方法& System.out.print(strOrigin + (isPalindromeByCharAtSingle(s)?"是":"不是")+"回文。");
& & }& & & & /**& &
* 通过调用StringBuffer的对象的reverse()方法,来判断翻转前后字符串是否相等,确定是否为回文& &
* @param s& &
* @return& &
*/& & public static boolean isPalindromeByBuffer(String s) {& & & & String strOrigin = filterLetterAndDigit(s);& & & & //将strOrigin作为输入参数,构造一个StringBuffer对象& & & & StringBuffer strBuf = new StringBuffer(strOrigin);& & & & //调用StringBuffer对象自带的reverse()方法进行字符串翻转,最后调用toString()返回一个String类型字符串& & & & String strAfterReverse = strBuf.reverse().toString();& & & & & //通过equals()方法判断原来的字符串和翻转后的字符串是否相等,来确定是否为回文& & & & return strOrigin.equals(strAfterReverse);& & }& & & & /**& &
* 通过字符串中的对称位置字符串是否相同来判断是否为回文,这里用了两个变量low和high来分别对应字符串对称位置的index& &
* @param s& &
* @return& &
*/& & public static boolean isPalindromeByCharAt(String s) {& & &//low和high分别对应字符串对称位置的index,以此来判断所有对称位置字符是否相同& & & & int low = 0;& & & & int high = s.length() - 1;& & & & while (low & high) {& & & & & & if (s.charAt(low) != s.charAt(high))& & & & & & & && // 不是回文& & & & & & low++;& & & & & & high--;& & & & }& & & && & & & &
// 是回文& & }& & & & /**& &
* 通过字符串中的对称位置字符串是否相同来判断是否为回文,这里用了一个变量i来对应字符串对称位置的index& &
* @param s& &
* @return& &
*/& & public static boolean isPalindromeByCharAtSingle(String s) {& & &//通过对称下标的关系使用一个变量即可判断所有对称位置字符是否相同& & &for(int i=0;i&s.length()/2;i++){& & & //只有当前一半字符串和后一半字符串对应位置相同,那么才是回文,只有有一个对称位置的字符不同就不是回文& & & if(s.charAt(i)!=s.charAt(s.length()-i-1)){& & & && & & }& & &}& & & & & & & &&
& & }& & & & /**& &
* 通过调用Character.isLetterOrDigit(Char char)过滤字母或者数字,判断字母或者数字的组合是否为回文& &
* @param s& &
* @return String& &
*/& & public static String filterLetterAndDigit(String s) {& & & & StringBuffer strBuf = new StringBuffer();& & & & for (int i = 0; i & s.length(); i++) {& & & & & & if (Character.isLetterOrDigit(s.charAt(i))) {& & & & & & &//调用StringBuffer的append(Char char)方法,将输入的字母或者数字加入其中& & & & & & & & strBuf.append(s.charAt(i));& & & & & & }& & & & }& & & & //返回String类型,需要将StringBuffer转换为String,需要调用StringBuffer对象的toString()方法& & & & return strBuf.toString();& & }& & }
本文永久更新链接地址:
相关资讯 & & &
& (11/04/:26)
& (09/01/:32)
& (05月21日)
& (10/06/:36)
& (08/26/:37)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款2.判断一个字符串是否为回文字符串。
int main(void)
char a[100];
int i = 0, j = 0;
printf("Please input st...
判断回文字符串:
void fun(const char *str,int len)
int i = 0;
j = len - 1...
//判断一个数是否为回文字符串
int fun(char *str)
int len=strlen(str);
for(i=0;i...
判断字符串是否为回文
判断回文确实是一个写烂的代码了,创建一个标志位flag即可,但是早上活跃一下头脑,复习一下
题目描述:
给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的。
本文详细讲解判断回文数和回文字符串的算法原理,并给出了完整的标准C语言代码,且提供标准函数接口,可供大家直接调用!...
《递归入门》
所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的。比如"level" 、 “aaabbaaa”
题目:判断一个字符串是否为回文
解法:递归
Problem B: 回文(栈和队列)
Time Limit: 1 Sec
Memory Limit: 1000 MB
Submit: 68
Solved: 20
[Submit][Stat...
他的最新文章
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)C语言编写一个程序,判断输入的一个字符串是否是回文。_百度知道
C语言编写一个程序,判断输入的一个字符串是否是回文。
#include &stdio.h&
#include &string.h&
int main()
int x,y,i;
char st1[100],*p;
gets(st1);
x=strlen(st1);
char st2[x];
for(i=0;i&x;i++)
*p=st1[i];
st2[x-i-1]=*p;
y=strcmp(st1,st2);
if(y==0) printf(&YES&);
我有更好的答案
i &= x/2; i++)/&#47,原理已讲 {
if(st1[i] != st1[x-i-1])///不是回文
if(i&/&#47不用那么麻烦,看看这种思路一个字符串如果是回文,就是两端相对于中心位置对称如123321123-对称点-3211232112---3(对称点)--21只需要拿左边这半边的字符,与右边的比较;void main(){ int x,i; char st1[100]={0};
gets(st1); x=strlen(st1); for(i = 0;/比到一半就不比了;/这就是比较两端的字符
/ x/2)/没执行break,就是回文
printf(&quot,如果一样,就是回文#include &string.h&stdio.h&#include &quot
规定用指针,可以改一下么
#include &stdio.h&#include &string.h&#include &stdlib.h&void main(){ int x,i; char *st1=NULL; st1 = (char *)malloc(100 * sizeof(char)); if(NULL == st1) {
printf(&malloc failed!\n&);
} memset(st1,0, 100); gets(st1);
x=strlen(st1);
for(i = 0; i &= x/2; i++)///比到一半就不比了,原理已讲 {
if(st1[i] != st1[x-i-1])///这就是比较两端的字符
//不是回文
} } free(st1); st1 = NULL;
if(i& x/2)///没执行break,就是回文
printf(&YES&); else
printf(&NO&); }
采纳率:41%
来自团队:
主函数应该返回0表示程序成功运行;在程序最后加句:return 0;
char st2[x];数组的长度不能用变量,只能像st1那样指定长度
*p=st1[i] 改为p=&st1[i] 试下
你可以去我家水井网问问啊?那是这方面的专业
定义数组时[ ]内必须是常量表达式。char st2[x]错了。
其他3条回答
为您推荐:
其他类似问题
回文的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。C++实现判断字符串是否回文实例解析
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了C++实现判断字符串是否回文,其中采用了数据结构中栈以及过滤字符等技术,,需要的朋友可以参考下
本文实例解析了C++判断字符串是否回文的实现过程,通过数据结构中的相关例子,回文判断中采用过滤空格字符、有效字符依次入栈等方法实现该功能。
具体实例代码如下:
#include &iostream&
#define Max_String_Len 100
#include "SqStack.h"
//判断字符串是否回文
bool ispalindrome(char *in_string)
SqStack &char& s(Max_String_Len);
char deblankstring[Max_String_Len],
int i = 0;
//过滤空格字符
while(*in_string != '\0'){
if(*in_string != ' ')
deblankstring[i++] = *in_
in_string++;
deblankstring[i] = '\0';
//有效字符依次入栈
while(deblankstring[i] != '\0')
s.Push(deblankstring[i++]);
//从栈中弹出字符依次比较
while(!s.Empty()){
c = s.Top();
if(c != deblankstring[i])
int main()
char instring[Max_String_Len];
cout && "input a string:" &&
cin.get(instring, Max_String_Len);
if(ispalindrome(instring))
cout && "\"" && instring && "\"" && " is a palindrome." &&
cout && "\"" && instring && "\"" && " is not a palindrome." &&
system("pause");
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具

我要回帖

更多关于 c语言读取文件尾 的文章

 

随机推荐