如何在字符串中打印回文词?

时间:2017-03-13 15:47:54

标签: java

所以我决定在字符串中打印所有回文单词。我没有使用数组或方法来找到只有3个字符的回文。这是我的代码,问题是,它什么都没打印

import java.util.Scanner;
class Pa{
    public static void main(String[] args){
        Scanner sc = new Scanner (System.in);
        String s=sc.nextLine();
        char b;
        int i,a;
        String st="";/to extract a word
        s=s+" ";
        String t="";/to extract the reverse of the word
        a=s.length();
        for(i=0;i<a;i++){
            b=s.charAt(i);
            if(b!=' '){
                st=st+b;/word
                t=b+st;/reversed word
            } else { 
                if(st.equals(t)){
                    System.out.println(st);
                }
            st="";
            t="";
            }
        }
    }
}

我无法弄清楚错误是什么,也不会欣赏分裂或3字回文查找器选项或普通的偶数或奇数回文查找选项。

5 个答案:

答案 0 :(得分:1)

要检查String是否是Palindrom,单个循环就足够了

public static boolean isPalindrom(String word) {
    word = word.toLowerCase();
    for (int i = 0; i < word.length() / 2; i++) {
        if (word.charAt(i) != word.charAt(word.length() - (i + 1))) {
            return false;
        }
    }
    return true;
}

然后你可以在input.split("\\s")这样的每个空格处拆分你的输入字符串,并检查每个单词是否是一个palindrom

答案 1 :(得分:0)

你的问题如下。不是将b附加到反向字符串,而是将其附加到普通字符串。

        b=s.charAt(i);
        if(b!=' '){
            st=st+b; 
            t=b+st; // This should be t=b+t
        } else { 

答案 2 :(得分:0)

检查回文的最简单方法:

private static boolean isPalindrom(String s) {
    return s.equals(new StringBuilder(s).reverse().toString());
}

答案 3 :(得分:0)

//input-mom gives me a pen(reverse-mom sevig em a nep)(checking each word by reverse)//
//output-palindrome//
//input-he is a boy//
//output-not a palindrome//

    import java.util.*;
    class main2 
{
        public static void main(String args[])
        {
            Scanner sc=new Scanner(System.in);
            System.out.println("Enter a string");
            String str=sc.nextLine();   //he is a boy//
            int ctr=0;
            String temp="",temp1="",x="",y="";
            int i,j;
            String str1[]=str.split(" ");//[he,is,a,boy]//
            for(i=0;i<str1.length;i++)//length=4//
            {
                temp=str1[i];//reverse each word//
                for(j=temp.length()-1;j>=0;j--)
                {
                    x=x+temp.charAt(j);
                }
                x=x+" ";
            }
            System.out.println(x);

            for(int k=0;k<str1.length;k++)
            {
                temp1=str1[k]; //he//
                for(int l=temp1.length()-1;l>=0;l--)
                {
                    y=y+temp1.charAt(l);//eh//
                }
                if(y.equalsIgnoreCase(temp1))//he==eh?//
                {
                    ctr++;
                    System.out.println(y);//for printing the word//
                }
            }
            if(ctr==0)
            System.out.println("Not a palindrome");
            else
            System.out.println("Palindrome");
        }
    }

答案 4 :(得分:0)

import java.util.*;
class palindrome {
    String reverse(String str)
     {  
         String tmp="";
         int l=str.length()-1;
        for(int i=l,n=0;i>=n;i--)
        {

        tmp=tmp+str.charAt(i);
     }
        return tmp;
    }  
}
class palindrome_word{

    public static void main(String[] args){
        Scanner sc = new Scanner (System.in);
        palindrome ob=new palindrome ();
        System.out.println("enter a sentance");
        String s=sc.nextLine();
        char b;
        int i,a;
        String st="";//to extract a word
        s=s+" ";
        String t="";//to extract the reverse of the word
        a=s.length();
        System.out.println("palindrome words");
        for(i=0;i<a;i++){
            b=s.charAt(i);
            if(b!=' '){
                st=st+b;//word
               // t=b+st;reversed word
            } else { 
                t=ob.reverse(st);
                if(st.equalsIgnoreCase(t)){
                    System.out.println(st);
                }
            st="";
            t="";
            }
        }
        sc.close();
    }
}