[LeetCode] 每日一题 3340. 检查平衡字符串
题目链接
题目描述
给你一个仅由数字 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 组成。
解题思路
本题难度较低,核心思想是分别计算偶数下标和奇数下标的数字之和,然后进行比较
具体步骤如下:
初始化
even
和odd
两个变量,分别用于记录偶数下标和奇数下标位置的数字总和遍历字符串
num
,根据索引的奇偶性,将数字累加到对应的变量中遍历完成后,比较
even
和odd
是否相等,返回相应的布尔值
代码实现
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)
空间复杂度:仅使用两个额外变量
even
和odd
,空间复杂度为 O(1)
总结
相比于之前的题目,这道题的难度较低,主要考察基本的字符串遍历和索引操作,属于比较简单直观的实现
希望这篇分享能为你带来启发!如果你有任何问题或建议,欢迎在评论区留言,与我共同交流探讨。
License:
CC BY 4.0