今天看到个题目,说是检查一个数字和它的倒置数字是否相等,也就是一个数字是不是回文,像是12321,前后颠倒也是等于自己。开始想到的是用除余法,得到每个数位上的数字后再倒置过来,后来想到,对于数字的位数未知的情况下怎么做,或者说对于位数不同的情况下,有没有简单的方法可以做到倒置。
各种找资料,看到java里面有提到,String类里面有方法,将数字转化成字符串,这样就简单点了。
字符串可以读取到每个位置上的字符,可以用数组保存,就能做到简单又方便的倒置数字,尽管数字的位数是未知的,不影响操作。
public boolean isPalindromic(int n){
String old = String.valueOf(n); //从原来的数字里得到字符串old
char[] c = new char[old.length()];
char[] c2 = new char[old.length()];
for(int i = 0; i < old.length(); i ++){ //利用字符数组得到单个字符
c[i] = old.charAt(i);
}
for(int i = c.length - 1; i >= 0; i --){ //利用c2数组得到倒置后的字符
c2[c.length - i -1] = c[i];
}
String now = String.valueOf(c2); //将倒置后的字符转化为字符串
return old.equals(now); //比较字符串,如果倒置后与之前是相当返回true
}