题目描述
给你两个正整数 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;
}
};