列表

详情


7020. 统计对称整数的数目

给你两个正整数 lowhigh

对于一个由 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: int countSymmetricIntegers(int low, int high) { } };

typescript 解法, 执行用时: 112 ms, 内存消耗: 50.7 MB, 提交时间: 2023-09-04 09:31:30

function countSymmetricIntegers(low: number, high: number): number {
    let ans = 0;
    for(let i = low; i <= high; i++) {
        let str = String(i);
        if(str.length % 2 == 0) {
            let half = str.length / 2;
            let sum = 0, _sum = 0;
            for(let i = 0; i < half; i++) {
                sum += +str[i];
                _sum += +str[i+half];
            }
            if(sum == _sum) ans++;
        }
    }
    return ans;
};

cpp 解法, 执行用时: 168 ms, 内存消耗: 5.9 MB, 提交时间: 2023-09-04 09:30:13

class Solution {
public:
    int countSymmetricIntegers(int low, int high) {
        int l=0;
        for(int i=low;i<=high;i++)
        {
            string i2s=to_string(i);
            int lengh=i2s.size();
            if (lengh%2==0)
            {
                int sum_s=0;
                for(int j=0;j<lengh/2;j++)
                {
                    sum_s+=i2s[j]-'0';
                    sum_s-=i2s[lengh-j-1]-'0';
                }
                if(sum_s==0)
                    l++;
            }
            else
                continue;
        }
        return l;
    }
};

golang 解法, 执行用时: 24 ms, 内存消耗: 6 MB, 提交时间: 2023-09-04 09:29:37

func countSymmetricIntegers(low int, high int) (ans int) {
	for i := low; i <= high; i++ {
		s := strconv.Itoa(i)
		n := len(s)
		if n%2 > 0 {
			continue
		}
		sum := 0
		for _, c := range s[:n/2] {
			sum += int(c)
		}
		for _, c := range s[n/2:] {
			sum -= int(c)
		}
		if sum == 0 {
			ans++
		}
	}
	return
}

python3 解法, 执行用时: 784 ms, 内存消耗: 16.1 MB, 提交时间: 2023-09-04 09:29:04

# 暴力算法
class Solution:
    def countSymmetricIntegers(self, low: int, high: int) -> int:
        ans = 0
        for i in range(low, high + 1):
            s = str(i)
            n = len(s)
            ans += n % 2 == 0 and sum(map(int, s[:n // 2])) == sum(map(int, s[n // 2:]))
        return ans

上一题