[LintCode] Mirror Numbers
Posted Push your limit!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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.
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的主要内容,如果未能解决你的问题,请参考以下文章
lintcode-medium-Print Numbers by Recursion
lintcode521- Remove Duplicate Numbers in Array- easy
lintcode: Check Sum of Square Numbers