Java编程题目-5:回文数

来源:互联网 发布:java打印三角形思路 编辑:程序博客网 时间:2024/06/11 07:55

回文数

就是从前向后读和从后向前读出的结果都是一样的。比如:1、2、121、123321
下面给出回文数判断的代码:

/** * 回文数 判断一个数是不是回文数(正读反读都一样:123321、121、1) *  * @author cythine * */public class PalindromicNum {    public String isPalindromic(String num) {        int len = num.length();//数字的长度        char head_c;//从数字前端取字符        char stern_c;//从数字尾端取字符        int head = 0;//前端的指针        int stern = len - 1;//尾端的指针        if (len == 0) {            return "Please input correct num!";        }        while (head <= stern) {            head_c = num.charAt(head);            stern_c = num.charAt(stern);            //下面的判断是防止数字中混有其他字符            if(head_c>'9' || head_c<'0' || stern_c>'9' || stern_c<'0'){                return "Please input correct num!";            }            if (head_c == stern_c) {                head++;                stern--;            } else {                return "num:"+num+" is not palindromic!";            }        }        return "num:"+num+" is palindromic!";    }}

顺便用junit4写了个单元测试类,如下:

public class PalindromicNumTest {    @Test    public void testIsPalindromic() {        PalindromicNum paNum = new PalindromicNum();        String res1 = paNum.isPalindromic("123321");        String res2 = paNum.isPalindromic("1");        String res3 = paNum.isPalindromic("0");        String res4 = paNum.isPalindromic("121");        String res5 = paNum.isPalindromic("123421");        String res6 = paNum.isPalindromic("");        String res7 = paNum.isPalindromic("   ");        String res8 = paNum.isPalindromic("123%21");        assertEquals( "num:123321 is palindromic!", res1);        assertEquals( "num:1 is palindromic!", res2);        assertEquals( "num:0 is palindromic!", res3);        assertEquals( "num:121 is palindromic!", res4);        assertEquals( "num:123421 is not palindromic!", res5);        assertEquals( "Please input correct num!", res6);        assertEquals( "Please input correct num!", res7);        assertEquals( "Please input correct num!", res8);    }}

测试结果:
这里写图片描述

其实这个回文数的判断就类似于将数组当中的奇偶数换位置(奇数在前,偶数在后)。关键就是对于前后两个元素index的移动和控制。

还可以通过StringBuilder进行字符串反转,代码如下:

public class PalindromicNum {    public static void main(String[] args) {        String res = PalindromicNum.IsPalindromicNum("12321");        System.out.println(res);    }    public static String IsPalindromicNum(String num) {        String num_reverse = new StringBuilder(num).reverse().toString();        char headC;        char sternC;        int len = num.length();        for (int i = 0; i < len; i++) {            headC = num.charAt(i);            sternC = num_reverse.charAt(i);            if (headC > '9' || headC < '0' || sternC > '9' || sternC < '0') {                return "Please input correct num!";            }            if(headC==sternC){                continue;            }else{                return "this num "+num+" is not palindromic! ";            }        }        return "this num "+num+" is palindromic! ";    }}
0 0
原创粉丝点击