文章

[LeetCode] 每日一题 3340. 检查平衡字符串

题目链接

https://leetcode.cn/problems/check-balanced-string

题目描述

给你一个仅由数字 0 - 9 组成的字符串 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 仅由数字 0 - 9 组成。

解题思路

本题难度较低,核心思想是分别计算偶数下标和奇数下标的数字之和,然后进行比较

具体步骤如下:

  1. 初始化 evenodd 两个变量,分别用于记录偶数下标和奇数下标位置的数字总和

  2. 遍历字符串 num,根据索引的奇偶性,将数字累加到对应的变量中

  3. 遍历完成后,比较 evenodd 是否相等,返回相应的布尔值

代码实现

class Solution {
    public boolean isBalanced(String num) {
        int even = 0, odd = 0;
        for (int i = 0; i < num.length(); i++) {
            if (i % 2 == 0) {
                even += num.charAt(i) - '0';
            } else {
                odd += num.charAt(i) - '0';
            }
        }
        return even == odd;
    }
}

复杂度分析

  • 时间复杂度:遍历字符串一次,时间复杂度为 O(n)

  • 空间复杂度:仅使用两个额外变量 evenodd,空间复杂度为 O(1)

总结

相比于之前的题目,这道题的难度较低,主要考察基本的字符串遍历和索引操作,属于比较简单直观的实现

希望这篇分享能为你带来启发!如果你有任何问题或建议,欢迎在评论区留言,与我共同交流探讨。

License:  CC BY 4.0