private int strobogrammaticInRangeUtil(String low, String high, int left, int right, char[] result) {
        if (left > right) {
            String r = new String(result);
            if ((r.length() == low.length() && low.compareTo(r) > 0) || (high.length() == result.length && high.compareTo(r) < 0)) {
                return 0;
            }
            return 1;
        }

        int count = 0;

        for (char[] pair : pairs) {
            result[left] = pair[0];
            result[right] = pair[1];
            //number should not start with 0 if its length is greater than 0
            if (result.length != 1 && result[0] == '0') {
                continue;
            }
            //if left == right then we got to make sure we dont pick pair 6, 9 or 9, 6
            if ((left < right) || (left == right && pair[0] == pair[1])) {
                count += strobogrammaticInRangeUtil(low, high, left + 1, right - 1, result);
            }
        }
        return count;
    }
Date 04/17/2016
@author Tushar Roy

A strobogrammatic number is a number that looks the same when rotated 180 degrees (looked at upside down).
Write a function to count the total strobogrammatic numbers that exist in the range of low <= num <= high.

https://leetcode.com/problems/strobogrammatic-number-iii/
src/com/interview/number/AllStrobogrammaticNumber.java