Java编程题目-5:回文数

回文数

就是从前向后读和从后向前读出的结果都是一样的。比如: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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值