【LetMeFly】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 组成。
解题方法:遍历求和
使用一个整型变量来统计结果即可。遍历字符串,遇到奇数下标则加上当前字符对应的数字,否则减去之。最终判断是否为。
AC代码
C++
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Solution { public: bool isBalanced(string num) { int cnt = 0; for (int i = 0; i < num.size(); i++) { cnt += i % 2 ? (num[i] - '0') : -(num[i] - '0'); } return cnt == 0; } };
CPP
|
Python
1 2 3 4 5 6 7 8 9 10 11 12
| ''' Author: LetMeFly Date: 2025-03-14 09:34:04 LastEditors: LetMeFly.xyz LastEditTime: 2025-03-14 09:34:04 ''' class Solution: def isBalanced(self, num: str) -> bool: cnt = 0 for i, c in enumerate(num): cnt += ord(c) - 48 if i % 2 else 48 - ord(c) return cnt == 0
PYTHON
|
Java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
class Solution { public boolean isBalanced(String num) { int cnt = 0; for (int i = 0; i < num.length(); i++) { if (i % 2 == 0) { cnt += num.charAt(i) - 48; } else { cnt -= num.charAt(i) - 48; } } return cnt == 0; } }
JAVA
|
Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
package main
func isBalanced(num string) bool { cnt := 0 for i, c := range num { if i % 2 == 0 { cnt += int(c) - 48 } else { cnt -= int(c) - 48 } } return cnt == 0 }
GO
|
同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~
千篇源码题解已开源