中心对称数
题目
中心对称数是指一个数字在旋转了180 度之后看起来依旧相同的数字(或者上下颠倒地看)。
请写一个函数来判断该数字是否是中心对称数,其输入将会以一个字符串的形式来表达数字。
示例 1:
输入: "69"
输出: true
示例 2:
输入: "88"
输出: true
示例 3:
输入: "962"
输出: false
思路
此题对于数字有不同的要求,0,1,6,8,9旋转180°后,得到新的数字0,1,9,8,6
而其他数字旋转过后则不是数字,因此可以遍历这个数字,一旦出现对应数字则替换,之后比较两个数字是否相同即可.
代码没有验证过.
代码
class Solution {
public boolean isSymmetry(int num) {
HashMap<Character,Character> map = new HashMap<>();
map.put('0','0');
map.put('1','1');
map.put('2','-');
map.put('3','-');
map.put('4','-');
map.put('5','-');
map.put('6','9');
map.put('7','-');
map.put('8','8');
map.put('9','6');
String number = num + "";
StringBuilder stringbuilder = new StringBuilder();
for(int i =number.length()/2-1;i>=0;i--){
if(map.get(number.charAt(i)) == '-'){
return false;
}
stringbuilder.append(map.get(number.charAt(i)));
}
String substring = number.substring(number.length() / 2);
if(stringbuilder.toString().equals(substring)){
return true;
}else{
return false;
}
}
}