2843. 统计对称整数的数目

2843. 统计对称整数的数目

题目

给你两个正整数 lowhigh

对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字之和相等,则认为这个数字是一个对称整数。

返回在 [low, high] 范围内的 对称整数的数目

示例 1:

1
2
3
输入:low = 1, high = 100
输出:9
解释:在 1100 范围内共有 9 个对称整数:112233445566778899

示例 2:

1
2
3
输入:low = 1200, high = 1230
输出:4
解释:在 12001230 范围内共有 4 个对称整数:1203121212211230

提示:

  • 1 <= low <= high <= 104

思路

因为数字是由 2 * n 位数字组成的整数 x,因此直接截取数字的前n位和后n位,然后再比较前n位和与后n位和相等的个数即可。

完整代码

84

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
public int countSymmetricIntegers(int low, int high) {
int res = 0;
for (int i = low; i <= high; i++) {
String str = String.valueOf(i);
int len = str.length();
//只考虑偶数位数
if (len % 2 != 0) continue;
int half = len / 2;
int leftSum = 0;
int rightSum = 0;
for (int j = 0; j < half; j++)
leftSum += str.charAt(j) - '0';
for (int j = half; j < len; j++)
rightSum += str.charAt(j) - '0';
if (leftSum == rightSum) res++;
}
return res;
}
}