2843.统计对称整数的数目(模拟,分割整数为两部分)
给你两个正整数 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
思路
因为本题是计算整数每位数字的和,而整数不能直接用下标访问,所以最好将整数换为字符串,用字符串的下标进行每位数字的和累加。
字符串是字符数组,而整数并不是数组。
1.整数换成字符串版本
class Solution {
public:
bool isSymmetic(int num){
string s = to_string(num);
if(s.size()%2!=0) return false;
int firstSum=0,secondSum=0;
int middle = s.size()/2;//找到中间值
for(int i=0;i<middle;i++){
firstSum += s[i] -'0'; //一定要注意这里是字符计算,字符计算要-'0'
secondSum += s[i+middle]-'0';
}
return (firstSum==secondS