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

 

Related Problems

[LeetCode]Strobogrammatic Number II

[LeetCode]Strobogrammatic Number III

转载于:https://www.cnblogs.com/lz87/p/6999145.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值