Skip to content

Latest commit

 

History

History

2843

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

You are given two positive integers low and high.

An integer x consisting of 2 * n digits is symmetric if the sum of the first n digits of x is equal to the sum of the last n digits of x. Numbers with an odd number of digits are never symmetric.

Return the number of symmetric integers in the range [low, high].

 

Example 1:

Input: low = 1, high = 100
Output: 9
Explanation: There are 9 symmetric integers between 1 and 100: 11, 22, 33, 44, 55, 66, 77, 88, and 99.

Example 2:

Input: low = 1200, high = 1230
Output: 4
Explanation: There are 4 symmetric integers between 1200 and 1230: 1203, 1212, 1221, and 1230.

 

Constraints:

  • 1 <= low <= high <= 104

Related Topics:
Math, Enumeration

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/count-symmetric-integers
// Author: github.com/lzl124631x
// Time: O((H - L) * lg(H))
// Space: O(lg(H))
class Solution {
    bool isSymmetric(int n) {
        auto s = to_string(n);
        if (s.size() % 2) return false;
        int N = s.size(), first = 0, second = 0;
        for (int i = 0; i < N; ++i) {
            if (i < N / 2) first += s[i] - '0';
            else second += s[i] - '0';
        }
        return first == second;
    }
public:
    int countSymmetricIntegers(int low, int high) {
        int ans = 0;
        for (int i = low ; i <= high; ++i) ans += isSymmetric(i);
        return ans;
    }
};