Easy

题目描述

给你一个仅由数字组成的字符串 num。如果偶数索引上的数字之和等于奇数索引上的数字之和,则称该数字字符串是平衡的。

如果 num 是平衡的,返回 true;否则,返回 false

示例 1:

输入:num = "1234"
输出:false
解释:
偶数索引上的数字之和是 1 + 3 == 4,奇数索引上的数字之和是 2 + 4 == 6。
由于 4 不等于 6,所以 num 不是平衡的。

示例 2:

输入:num = "24123"
输出:true
解释:
偶数索引上的数字之和是 2 + 1 + 3 == 6,奇数索引上的数字之和是 4 + 2 == 6。
由于两者相等,所以 num 是平衡的。

提示:

  • 2 <= num.length <= 100
  • num 仅由数字组成

解题思路

这道题要求检查一个数字字符串是否平衡,即偶数索引位置的数字之和是否等于奇数索引位置的数字之和。

解题思路:

最直观的解法是遍历字符串,分别计算偶数索引和奇数索引位置的数字之和,最后比较两个和是否相等。

具体步骤:

  1. 初始化两个变量 evenSumoddSum,分别用于存储偶数索引和奇数索引位置数字的和
  2. 遍历字符串,根据索引的奇偶性将对应的数字加到相应的和中
  3. 最后比较两个和是否相等

优化思路: 还可以使用一个变量来记录差值,偶数索引的数字加上,奇数索引的数字减去,最后检查差值是否为0。这种方法在空间复杂度上略有优化,但时间复杂度相同。

推荐使用第一种方法,因为逻辑更清晰易懂。

代码实现

class Solution {
public:
    bool isBalanced(string num) {
        int evenSum = 0, oddSum = 0;
        for (int i = 0; i < num.length(); i++) {
            if (i % 2 == 0) {
                evenSum += num[i] - '0';
            } else {
                oddSum += num[i] - '0';
            }
        }
        return evenSum == oddSum;
    }
};
class Solution:
    def isBalanced(self, num: str) -> bool:
        even_sum = 0
        odd_sum = 0
        for i in range(len(num)):
            if i % 2 == 0:
                even_sum += int(num[i])
            else:
                odd_sum += int(num[i])
        return even_sum == odd_sum
public class Solution {
    public bool IsBalanced(string num) {
        int evenSum = 0, oddSum = 0;
        for (int i = 0; i < num.Length; i++) {
            if (i % 2 == 0) {
                evenSum += num[i] - '0';
            } else {
                oddSum += num[i] - '0';
            }
        }
        return evenSum == oddSum;
    }
}
var isBalanced = function(num) {
    let evenSum = 0;
    let oddSum = 0;
    
    for (let i = 0; i < num.length; i++) {
        if (i % 2 === 0) {
            evenSum += parseInt(num[i]);
        } else {
            oddSum += parseInt(num[i]);
        }
    }
    
    return evenSum === oddSum;
};

复杂度分析

复杂度类型复杂度说明
时间复杂度O(n)需要遍历字符串一次,n 为字符串长度
空间复杂度O(1)只使用了常数个额外变量

相关题目