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