目标
给你两个正整数 low 和 high 。
对于一个由 2 * n 位数字组成的整数 x ,如果其前 n 位数字之和与后 n 位数字之和相等,则认为这个数字是一个对称整数。
返回在 [low, high] 范围内的 对称整数的数目 。
示例 1:
输入:low = 1, high = 100
输出:9
解释:在 1 到 100 范围内共有 9 个对称整数:11、22、33、44、55、66、77、88 和 99 。
示例 2:
输入:low = 1200, high = 1230
输出:4
解释:在 1200 到 1230 范围内共有 4 个对称整数:1203、1212、1221 和 1230 。
说明:
- 1 <= low <= high <= 10^4
思路
计算给定区间内的对称整数数目,对称整数的长度为偶数,且左边数字之和等于右边数字之和。
数据范围小可以直接暴力枚举。
代码
class Solution {
public int countSymmetricIntegers(int low, int high) {
int res = 0;
for (int i = low; i <= high; i++) {
String num = String.valueOf(i);
int r = num.length();
if (r % 2 == 1) {
continue;
}
r--;
int l = 0;
int diff = 0;
while (l < r) {
diff += num.charAt(l++) - num.charAt(r--);
}
res += diff != 0 ? 0 : 1;
}
return res;
}
}