1,问题描述
2843. 统计对称整数的数目
难度:简单
给你两个正整数 low
和 high
。
对于一个由 2 * n
位数字组成的整数 x
,如果其前 n
位数字之和与后 n
位数字之和相等,则认为这个数字是一个对称整数。
返回在 [low, high]
范围内的 对称整数的数目 。
示例 1:
1 2 3
| 输入:low = 1, high = 100 输出:9 解释:在 1 到 100 范围内共有 9 个对称整数:11、22、33、44、55、66、77、88 和 99 。
|
示例 2:
1 2 3
| 输入:low = 1200, high = 1230 输出:4 解释:在 1200 到 1230 范围内共有 4 个对称整数:1203、1212、1221 和 1230 。
|
提示:
2,初步思考
查看了它的数据量级,直接暴力求解
3,代码处理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
| package days;
public class _2843统计对称整数的数目 {
public int countSymmetricIntegers_brute(int low, int high) { int cnt = 0; for (int i = low; i <= high; i++) { if (isSymmetric(i)) { cnt++; } } return cnt; }
private boolean isSymmetric(int num) { String string = String.valueOf(num); int n = string.length(); if(n%2==1) return false; int half = n>>1; char[] charArray = string.toCharArray(); int sum = 0; for (int i = 0; i < half; i++) { sum += charArray[i]-'0'; sum -= charArray[n-1-i]-'0'; } return sum == 0; }
public static void main(String[] args) { _2843统计对称整数的数目 solution = new _2843统计对称整数的数目(); System.out.println(solution.countSymmetricIntegers_brute(1, 100)); System.out.println(solution.countSymmetricIntegers_brute(1200, 1230)); } }
|