首页 > 代码库 > [LintCode] Mirror Numbers
[LintCode] Mirror Numbers
A mirror number is a number that looks the same when rotated 180 degrees (looked at upside down).
Write a function to determine if a number is mirror. The number is represented as a string.
Example
For example, the numbers "69", "88", and "818" are all mirror numbers.
Given num = "69"
return true
Given num = "68"
return false
The allowed mapping is:
6 -> 9
9 -> 6
0 -> 0
1 -> 1
8 -> 8
Use a hash map to store the above mapping and go through the input string. If a character has no mappings or
its mapped character is not the same with the character at its symmetric right side , return false.
1 public class Solution { 2 public boolean isStrobogrammatic(String num) { 3 Map<Character, Character> map = new HashMap<Character, Character>(); 4 map.put(‘6‘, ‘9‘); 5 map.put(‘9‘, ‘6‘); 6 map.put(‘0‘, ‘0‘); 7 map.put(‘1‘, ‘1‘); 8 map.put(‘8‘, ‘8‘); 9 int left = 0, right = num.length() - 1; 10 while (left <= right) { 11 if (!map.containsKey(num.charAt(left))) { 12 return false; 13 } 14 if (map.get(num.charAt(left)) != num.charAt(right)) { 15 return false; 16 } 17 left++; 18 right--; 19 } 20 return true; 21 } 22 }
[LintCode] Mirror Numbers
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。