
题目描述
给你两个正整数 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 。
算法分析
放入数组中,或者把数字转为字符串处理
完整代码
class Solution {
public:
    bool Fun(int n) {
        vector<int> ans;
        while (n != 0) {
            int t = n % 10;
            ans.push_back(t);
            n /= 10;
        }
        int i = 0;
        int j = ans.size() - 1;
        int sum1 = 0;
        int sum2 = 0;
        if(ans.size()%2!=0)
            return false;//位数必须是偶数的倍数
        while (i < j) {
            sum1 += ans[i];
            sum2 += ans[j];
            i++;
            j--;
        }
        return sum1 == sum2;
    }
    int countSymmetricIntegers(int low, int high) {
        int count = 0;
        for (int i = low; i <= high; i++) {
            if (Fun(i))
                count++;
        }
        return count;
    }
};



















