← All problems

2843. Count Symmetric Integers

EasyOpen on LeetCodeProblem statement

Problem Statement

2843. Count Symmetric Integers

Easy


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:

Java — digit extraction — alternative 1

Source file
class Solution {
    public int countSymmetricIntegers(int low, int high) {
        int count = 0;
        for (int i = low; i <= high; i++)
            if (isSymmetric(i))
                count++;
        return count;
    }

    private boolean isSymmetric(int x) {
        int len = (int) Math.log10(x) + 1, sum = 0;
        if ((len & 1) == 1)
            return false;
        for (int i = 0; i < len / 2; i++) {
            sum += x % 10;
            x /= 10;
        }
        for (int i = len / 2; i < len; i++) {
            sum -= x % 10;
            x /= 10;
        }
        return (sum == 0);
    }
}