如題莽鸿,代碼如下:
/*
* 遞歸方式判斷一個字符串是否為回文字符串
*/
public class PartitionTest{
? ? ? ?public static void main(String[] args) {?
? ? ? ? ? ? ? String str = "123456654321";
? ? ? ? ? ? ? System.out.println("srcString = "+str);
? ? ? ? ? ? ? System.out.println("srcString is "+(isPartition(str)?"":" not ")+" Partition");
? ? ? ?}
? ? ? /*
? ? ? ?* 實現(xiàn)原理:
? ? ? ?* 1吏恭、將原始字符串轉換成字符數(shù)組育灸;
? ? ? ?* 2花履、對比首尾兩字符是否相等屎篱,如果該兩字符不相等則直接返回false匆绣,否則對截取首尾兩字符的子串繼續(xù)調用該方法榜跌;
? ? ? ?* 3、對原始字符串的子串重復以上操作碧库,直到子串為空柜与;
? ? ? ?*/
? ? ? ?public static boolean isPartition(String str){
? ? ? ? ? ? ? char[] cArray = str.toCharArray();
? ? ? ? ? ? ? int i = 0;
? ? ? ? ? ? ? int j = cArray.length-1;
? ? ? ? ? ? ? while(i<j){
? ? ? ? ? ? ? ? ? ? ? ?//首尾兩字符不相等巧勤,返回false
? ? ? ? ? ? ? ? ? ? ? ?if(cArray[i]!=cArray[j]){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return false;
? ? ? ? ? ? ? ? ? ? ? ?}else{
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? System.out.println("substring = "+str.substring(i+1, j));
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? return isPartition(str.substring(i+1, j));
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ?}
? ? ? ? ? ?//遍歷所有子串,返回true
? ? ? ? ? return true;
? ? ?}
}