精华内容
下载资源
问答
  • import java.util.Scanner; public class Test3 { public static void main(String[] args){ Scanner reader=new Scanner(System.in); String str; str=reader.nextLine();... char a[]=str.toCharArray()...
    import java.util.Scanner; 
    public class Test3
    { 
     public static void main(String[] args){
      Scanner reader=new Scanner(System.in);
      String str;
      str=reader.nextLine();
      char a[]=str.toCharArray();
      int i;
      boolean flag=true;
      for(i=str.length()-1;i>=0;i--){
       if(a[i]==a[str.length()-1-i])
       {
       flag=true;
       }
       else
       {
        flag=false;
        break;
       }
      }
       if(flag)
       {
       System.out.println("yes");
       }
       else
       {
       System.out.println("no");
       }
     } 
    }
    展开全文
  • 判断回文字符串

    2019-05-12 23:54:55
    判断回文字符串 题目描述 若一个字符串的正序与倒序相同,则称其为回文字符串;现在给定一个字符串,使用递归的方法,判断他是否是回文字符串。 1.思想: 用一个队列和栈来存放字符数组,然后通过弹栈和出队的方式...

    判断回文字符串

    题目描述
    若一个字符串的正序与倒序相同,则称其为回文字符串;现在给定一个字符串,使用递归的方法,判断他是否是回文字符串。

    1.思想:

    用一个队列和栈来存放字符数组,然后通过弹栈和出队的方式,判断字符数组中的字符是否相等;

    2.具体代码:

    public class HuiWen {
        public static void main(String[] args){
            System.out.println(isHuiWen("abcba"));
            System.out.println(isHuiWen("123456654321"));
            System.out.println(isHuiWen("abc"));
            System.out.println(isHuiWen("liyuanfeng"));
        }
        private static boolean isHuiWen(String str){
            char[] chars = str.toCharArray();//字符串转字符数组
            Stack<Character> stack = new Stack<>();
            ArrayDeque<Character> queue = new ArrayDeque<>();
            for(char aChar : chars) {
                stack.push(aChar);
                queue.add(aChar);
            }
            for(int i = 0;i < queue.size();i++){
                if(queue.pop() != stack.pop()) return false;
            }
            return true;
        }
    }
    
    展开全文
  • 6-5 判断回文字符串 (20分) 本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。 函数接口定义: bool palindrome( char *s ); ...

    6-5 判断回文字符串 (20分)

    本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。
    函数接口定义:

    bool palindrome( char *s );
    函数palindrome判断输入字符串char *s是否为回文。若是则返回true,否则返回false。

    裁判测试程序样例:

    #include <stdio.h>
    #include <string.h>

    #define MAXN 20
    typedef enum {false, true} bool;

    bool palindrome( char *s );

    int main()
    {
    char s[MAXN];

    scanf("%s", s);
    if ( palindrome(s)==true )
        printf("Yes\n");
    else
        printf("No\n");
    printf("%s\n", s);
    
    return 0;
    

    }

    /* 你的代码将被嵌在这里 */
    输入样例1:

    thisistrueurtsisiht
    输出样例1:

    Yes
    thisistrueurtsisiht
    输入样例2:

    thisisnottrue
    输出样例2:

    No
    thisisnottrue
    (20分)
    作者
    C课程组
    单位
    浙江大学
    代码长度限制
    16 KB
    时间限制
    400 ms
    内存限制
    64 MB

    bool palindrome( char *s )
    {
        int count=0,i=0;
    /*  如果不用strlen函数
        int *cun=s;
        while(*s!='\0'){
            count++;
            s++;
        }
        s=cun   经过上面循环后,指针不再只想s基地址,然后下面s[0]也不是指基地址,所以先用变量保存
        */       
        count=strlen(s);
        count--;
        int ret=1;
        while(i<count){
            if(s[i]!=s[count]){
                ret=0;
                break;
            }
            i++;
            count--;
        }
        if(ret==1) return true;
        else return false;
    }
    
    展开全文
  • 求一个字符串的最长回文子串,很明显,把这个串倒过来加到原来的串后面,后缀数组即可,注意中间用1隔开,最后补0,。要注意sa[i-1]和sa[i]要在两个串中且对应位置正好满足关系 : sa[i-1]+sa[i]+height[i])== 2*n+1...

    求一个字符串的最长回文子串,很明显,把这个串倒过来加到原来的串后面,后缀数组即可,注意中间用1隔开,最后补0,。要注意sa[i-1]和sa[i]要在两个串中且对应位置正好满足关系 : sa[i-1]+sa[i]+height[i])== 2*n+1。这个就很明显了

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #define rep(i,n) for(int i = 0;i < n; i++)
    using namespace std;
    const int size  = 200005,INF = 1<<30;
    char s[size];
    int rk[size],sa[size],height[size],w[size],wa[size],res[size];
    void getSa (int len,int up) {
    
    	int *k = rk,*id = height,*r = res, *cnt = wa;
    	rep(i,up) cnt[i] = 0;
    	rep(i,len) cnt[k[i] = w[i]]++;
    	rep(i,up) cnt[i+1] += cnt[i];
    	for(int i = len - 1; i >= 0; i--) {
    		sa[--cnt[k[i]]] = i;
    	}
    	//初始化
    	int d = 1,p = 0;
    	while(p < len){
    		for(int i = len - d; i < len; i++) id[p++] = i;
    		rep(i,len)	if(sa[i] >= d) id[p++] = sa[i] - d;//id保存了按后h/2排序的的序列,即排第i的后h/2的是原数组中的哪一个,往前d个找开头
    		rep(i,len) r[i] = k[id[i]];   //重新构造串!
    
    		rep(i,up) cnt[i] = 0;
    		rep(i,len) cnt[r[i]]++;
    		rep(i,up) cnt[i+1] += cnt[i];
    		for(int i = len - 1; i >= 0; i--) {
    			sa[--cnt[r[i]]] = id[i];
    		}
    		//同上
    
    		swap(k,r);
    		p = 0;
    		k[sa[0]] = p++; //更新字符上限
    		rep(i,len-1) {
    			if(sa[i]+d < len && sa[i+1]+d <len &&r[sa[i]] == r[sa[i+1]]&& r[sa[i]+d] == r[sa[i+1]+d])
    				k[sa[i+1]] = p - 1;
    			else k[sa[i+1]] = p++;
    		}
    		//懂了!
    		if(p >= len) return ; //超出len,直接结束
    		d *= 2,up = p, p = 0;
    	}
    }
    void getHeight(int len) {
    	rep(i,len) rk[sa[i]] = i;
    	height[0] =  0;
    	for(int i = 0,p = 0; i < len - 1; i++) {
    		int j = sa[rk[i]-1];
    		while(i+p < len&& j+p < len&& w[i+p] == w[j+p]) {
    			p++;
    		}
    		height[rk[i]] = p;
    		p = max(0,p - 1);
    	}
    }
    int main()
    {
        int n,up=0;
        gets(s);
        n=strlen(s);
        for(int i=0;i<n;i++)
        {
            w[i]=s[i];
            up=max(up,w[i]);
        }
        w[n]=1;
        for(int i=n+1;i<=2*n;i++)
            w[i]=s[2*n-i];
        w[2*n+1]=0;
        getSa(2*n+1,up+1);
        getHeight(2*n+1);
        int ans=1,j=0;
        for(int i=1;i<=2*n;i++)
            {
                if(((sa[i]<n&&sa[i-1]>n)||(sa[i]>n&&sa[i-1]<n))&&( (sa[i-1]+sa[i]+height[i])== 2*n+1 ))
                {
                    if(ans<height[i])
                    {
                        ans=height[i];
                        j=sa[i-1]<sa[i]?sa[i-1]:sa[i];
                    }
                    else if(ans==height[i])
                    {
                        j=min(j,min(sa[i-1],sa[i]));
                    }
                }
            }
          //  if(j>n)
        //printf("%d\n",ans);
        for(int i=j;i<j+ans;i++)
            printf("%c",s[i]);
        printf("\n");
        return 0;
    }
    


    展开全文
  • 回文字符串

    2020-12-04 15:38:30
    数组判断回文字符串 **题目:**回文字符串,什么叫回文字符串,回文字符串指的是将一个字符翻转过来和原来的字符串是相等的,这就是回文字符串。例如:“abcddcba”这就是一个简单的回文字符串。请你写一个方法...
  • C#判断回文字符串 题目描述 使用C#编写一个静态方法。该方法能够判断字符串是否是“回文”(即顺读和逆读相同的字符串)。 输入 一个字符串; 输出 如果是回文字符串,则输出“yes”,否则输出“no”; 样例...
  • 可以判断字符串和数组是否回文 function checkF1(o){ if(o instanceof Array){ return o.toString() == o.toString().split('').reverse().join(''); } else{ return o == o.split('').reverse().join(''...
  • 使用指针判断回文字符串

    千次阅读 2020-04-18 09:44:37
    判断回文字符串有多种方法,可以分为使用指针的和使用数组的,在循环比较的结束调件上,有到1/2位置处结束的,有低处位置高于高处位置结束的。下面给出指针写法: int huiwen(char *str){ int flag=1; int len; ...
  • /*** Created by Administrator on 2017/4/23.* 找出一个数组中的最大回文字符串* 思路:1,遍历每个字符,从第一个到最后一个。for()* 2.以当前字符为基准点,向左向右延伸,看左右是否相等[注意基数回文与偶数回文...
  • 所谓回文字符串,是指从左到右读和从右到左读完全相同的字符串。主要涉及知识点:字符数组的输入输出,及相应的处理。这个问题,可以从字符串的两头开始比较,即第1个字符和倒数第1个字符比较,第2个字符和倒数第2个...
  • 题目描述:给你一个字符串(|s|<=1e5),有Q次询问,1可以单点修改字符,2或者给你区间L,R,问你这个字串是不是回文串。(Q<=1e5) 思路:暴力必然超时。如果没有点修改,怎么快速判断子串是不是回文串?当然是...
  • 如果是回文字符串,则输出“yes”,否则输出“no”; 样例输入 abcdcab 样例输出 no 提示 (1)用string类的toCahrArray()方法,将字符串转换为字符数组。(2)使用StringBuilder类保存逆序后的字符串。 ...
  • 如果是回文字符串,则输出“yes”,否则输出“no”; 样例输入 abcdcab 样例输出 no 提示 (1)用string类的toCahrArray()方法,将字符串转换为字符数组。(2)使用StringBuilder类保存逆序后的字符串。 ...
  • * 找出一个数组中的最大回文字符串 * 思路:1,遍历每个字符,从第一个到最后一个。for() * 2.以当前字符为基准点,向左向右延伸,看左右是否相等[注意基数回文与偶数回文判断方法不一样]。f...
  • 栈与队列——判断回文字符串

    千次阅读 2018-04-19 19:53:12
    提示:设字符数组str中存放了要判断字符串。把字符数组中的字符逐个分别存入队列和堆栈,然后逐个出队列和退栈并比较出队列的字符和退栈的字符是否相等,若全部相等则该字符序列是回文,否则就不是回文。以下是...
  • 判断回文字符串 栈实现

    千次阅读 2017-03-23 17:49:46
    想把字符串先存入字符串数组,然后挨个压入栈,然后每个字符在栈中弹出,这时数组逐渐输出每个字符,判断是否与之相等。 这样利用栈,实现了字符串的逆向输出,同起始的字符串进行比较,很容易判断出是否回文。 ...
  • 如果是回文字符串,则输出“yes”,否则输出“no”; 样例输入 copy abcdcab 样例输出 no 提示 (1)用string类的toCahrArray()方法,将字符串转换为字符数组。(2)使用StringBuilder类保存逆序后的...
  • 问题描述:编写一个函数,判断一个... i,j:int型变量,表示将字符串变为字符数组中的下标 member:char型变量,用于表示出栈的字符型变量 涉及教材:《数据结构——Java语言描述(第2版)》 清华大学出版社 ...
  •  该代码的功能可以实现对任意的一段字符串进行判断是否有回文回文有哪些,和其中的最大回文。 二、代码部分 1、全局变量 1 static String hws = ""; 2 static int num = 0; 3 static String[] hw; 2、...
  • 题目:字符串如果是单链表存储的,怎么判断是一个回文串? 本人刚刚学习算法,看大佬们说快慢指针什么的,说实在的,还是不太会用指针,自己就想到了数组,最笨的办法就是前后一一比较 思路:获取到字符串存入数组...
  • 解析回文字符串

    2020-11-21 20:58:20
    判断回文字符串(存储字符串的可以是字符数组,也可以是链表) 一. 字符数组存储的字符串进行回文判断 思路一: 将字符串拆分成一个一个字符,放进一个字符数组中 用一个新的数组存放,只不过是逆序存放 依次判断字符是否...
  • 回文定义:“回文字符串”就是正读倒读都一样的字符串。如字符串“Abcd121dcba”是一段回文字符串。 实现方法:将字符串分成两部分并转换为字符数组,从字符串数组的两端逐个进行比较。 实现代码: public class...
  • 回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B...
  • /** * 字符串反转 * 1.将字符串转为数组 2.数组反转 3.join()方法拼接成字符串 * @param {String} str ... * 判断回文字符串 * 1.通过字符串反转和字符串比较,判断是否是回文字符串 * @para
  • 我试图寻找解决方案,但我发现的所有解决方案都是字符串.我想要做的是检查用户输入的字符数组是否是回文.这是我到目前为止所拥有的:public static boolean palCheck(char[] a, int index, int start) {if (a[start] ...
  • 原理:定义一个方法,我们把判断字符串传进去,第一先判断他是否是string格式,是的话 我们把它塞进一个数组里(split())然后倒叙排列(reverse()) 最后拆分为字符串(join()) 相反就直接return false;...
  • 判断一个字符串是否为回文字符串(charAt与toCharArray() 两种方法) 转载请标注谢谢 定义 首先咱们要知道什么是回文字符串,“回文字符串”是一个正读和反读都一样的字符串。 比如“level”或者“noon”等就是回文...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 686
精华内容 274
关键字:

数组判断回文字符串