Java-判断是不是回文字符串
in Java入门小程序 with 0 comment

Java-判断是不是回文字符串

in Java入门小程序 with 0 comment

回文字符串:简单来说就是正着念和倒着念是一样的。
判断一个字符串是不是回文字符串的两种方法。

递归来判断是不是回文字符串

这种方法来自csdn,完全的是利用递归来判断是否为字符串。

代码部分

    import java.util.Arrays;
import java.util.Scanner;

public class RecursionPalindrome_String {
        public boolean palindromeJudge(String str){
        //当字符串长度为1,或者为空字符串就认为是回文,这个作为已知点,长的字符串要向这个方向追溯。这也是递归的终止条件之一
        if(str.length()==1||str.length()==0){
             return true;
        }else if(str.charAt(0)==str.charAt(str.length()-1)){
           
        String strShort=stringCut(str);//把字符串第一个和最后一个字符截掉
            return palindromeJudge(strShort);//调用自身再进行比较
        }else{//递归的终止条件之二:字符串的第一个字符和倒数第一个不相等的情况,直接返回false
            return false;
        }
        }
        //把字符串第一个和最后一个字符截掉
        public static String stringCut(String str){
           
         if(str==null||"".equals(str)){
                 
        return "";
             }
               char[] src=str.toCharArray();
             
        char[] dst=Arrays.copyOfRange(src, 1,src.length-1);
              return String.valueOf(dst);
        }

        public static void main(String[] args) {
            RecursionPalindrome_String   test=new RecursionPalindrome_String();
               
            Scanner in=new Scanner(System.in);
            String a=in.nextLine();
        System.out.println(test.palindromeJudge(a));
               }
        
}

for循环来判断是否为回文字符串

代码部分

    import java.util.Scanner;

public class Palindrome_string {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Scanner in=new Scanner(System.in);
        String a;
        a=in.nextLine();
        String b;
        char []arr=a.toCharArray();
        StringBuffer sb=new StringBuffer();
        int len=a.length();
        for(int i=0;i<a.length();i++) {            
        sb.append(arr[len-i-1]);                
        }
        b=sb.toString();
        System.out.println(a);
        System.out.println(b);
        if(a.equals(b))
            System.out.println("这是一个回文字符串!");
    }

}

注:这种方法借助了StringBuffer来进行判断,思路如下:

思维

输入一个字符串然后借助StringBuffer的对象sb来存贮一个倒叙的字符串,接着把倒叙存好了的这个数组转换为String,然后进行判断两个String是否相等。
比较两个String是否相等需要用.equals方法,不能用==

利用栈来实现判断是否为回文字符串

import java.util.Scanner;
import java.util.Stack;

public class StackTest {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        Stack<Character> stack=new Stack<Character>();
        @SuppressWarnings("resource")
        Scanner in=new Scanner(System.in);
        System.out.println("输入你要入栈的字符串:");
        String a=in.nextLine();
        char b[]=a.toCharArray();
        for(int i=0;i<a.length();i++) {
            stack.push(b[i]);
        }
        char[] c=new char[a.length()];
        for(int i=0;i<a.length();i++) {
        c[i]=stack.pop();    
        System.out.println("元素"+c[i]+"出栈");    
        }
        String d=new String(c);
        if(a.equals(d)) {
            System.out.println("这是一个回文字符串");        
        }
            
    }

}
Responses