[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.

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的主要内容,如果未能解决你的问题,请参考以下文章

lintcode-medium-Print Numbers by Recursion

lintcode521- Remove Duplicate Numbers in Array- easy

lintcode: Check Sum of Square Numbers

Lintcode371 Print Numbers by Recursion solution 题解

lintcode入门篇三

lintcode56 - Two Sum - easy