1. 程式人生 > >遞歸方式判斷某個字串是否是回文

遞歸方式判斷某個字串是否是回文

正向 又一 spa 方式 can 進程 ont 回文字 println

1.題目:

技術分享

設計思想:首先字符串的輸入運用nextInt轉換就可以,進行輸入即可。這道題目主要是判斷是否為回文字符串的那部分,可以將方法定義在主函數中,也可以定義在主函數外進行調用。判斷部分:.length()判斷長度,.charAt()接收字符,關鍵是控制進程的算法,因為是回文字符串,所以判斷的是對應位置,找到準確的對應位置是關鍵,

a=str.length()-n; b=str.length()-(a+1); 兩者一個從頭開始,一個從尾部開始,開始相向而行,兩者控制對應位置,下面運用遞歸算法 一遍又一遍判斷對應位置的值是否一樣,當兩者一樣,進行一次確定,只有一個字符就是回文數的判斷等。

流程圖:

技術分享

程序代碼:

//使用遞歸方式判斷某個字串是否是回文
import java.util.*;
public class Huiwenzifuchuan
{
public static void main(String[] args)
{
System.out.println("請輸入字符串:");
Scanner reader=new Scanner(System.in);
String str=reader.next();
int n=str.length();//測定字符串的長度,區分數組判斷長度的,測定數組的沒有括號
int m=huiwen(str,n);
if(m==1)
System.out.println("這個字符串是回文字符串!");
else
System.out.println("這個字符串不是回文字符串!");


}
public static int huiwen(String str,int n)
{
int a,b,j=0;
char c1,c2;
a=str.length()-n;//控制進程 從第一個開始正向移動
b=str.length()-(a+1);//從最後一個開始倒著移動
c1=str.charAt(a);//取字符的函數
c2=str.charAt(b);
if(c1==c2||a==b) j=1;//判斷 如果相應的字符一樣 J=1,//奇數個字符時 多出來的一個 不用遞歸判斷 直接是回文字符串
if(a!=b&&a<b&&j==1)
huiwen(str,n-1);//遞歸 判斷下一對字符 並且a和b正向判斷一次後就不必讓a和b走到盡頭繼續判斷 兩者達到終點即可
//if(a==b) j=1;//奇數個字符時 多出來的一個 不用遞歸判斷 直接是回文字符串)
return j;
}

}

程序運行截圖:

技術分享技術分享

遞歸方式判斷某個字串是否是回文