Given a string num
which represents an integer, return true
if num
is a strobogrammatic number.
A strobogrammatic number is a number that looks the same when rotated 180
degrees (looked at upside down).
Example One: Input: num = "69" Output: true Example Two: Input: num = "88" Output: true Example Three: Input: num = "962" Output: false
Solutions:
class Solution { public boolean isStrobogrammatic(String num) { Map<Character, Character> map = Map.of('1','1','0','0','6','9','9','6','8','8'); StringBuilder str = new StringBuilder(); int len = num.length(); char c = 0; for(int i = len -1; i >= 0; i--){ c = num.charAt(i); if(!map.containsKey(c)) return false; else str.append(map.get(c)); } String result = str.toString(); return result.equals(num); } }
Hints:
Logics:
- Hava a HashMap to restore the character that a strobogrammatic number
- The characters of '9' and '6' are the special ones
- Have a String Builder that will store the characters that are rotated 180 degrees
- compare the result with num
Tips:
- Set up the HashMap: Map<Character, Character> map = Map.of('1','1','0','0','6','9','9','6','8','8'); instead of using map.put() method
- use str.toString() to convert the char to string
- use .equals() method to compare the result
- return the boolean result