2025-05-27:检查平衡字符串。用go语言,给定一个只包含数字字符(0-9)的字符串 num,如果位于偶数索引位置上的数字之和等于位于奇数索引位置上的数字之和,则称该字符串为“平衡字符串”。
请判断输入的字符串是否满足这个条件,满足时返回 true,否则返回 false。
2 <= num.length <= 100。
num 仅由数字 0 - 9 组成。
输入:num = "24123"。
输出:true。
解释:
偶数下标处的数字之和为 2 + 1 + 3 = 6,奇数下标处的数字之和为 4 + 2 = 6。
由于两者相等,num 是平衡字符串。
题目来自力扣3340。
diff
用于存储偶数索引和奇数索引数字之和的差值,初始值为 0。sign
用于交替表示当前数字是加到 diff
还是从 diff
中减去,初始值为 1(表示加到 diff
)。num
中的每一个字符 c
进行遍历:c
转换为对应的数字 d
(通过 c - '0'
实现)。d
乘以 sign
后加到 diff
中。sign
的值取反(即 sign = -sign
),这样下一次循环时会从 diff
中减去 d
(如果上一次是加的话)。diff
的值是否为 0:diff == 0
,说明偶数索引和奇数索引的数字之和相等,返回 true
。false
。num
的长度。因为需要遍历整个字符串一次。diff
和 sign
)。package main
import (
"fmt"
)
func isBalanced(num string)bool {
diff := 0
sign := 1
for _, c := range num {
d := int(c - '0')
diff += d * sign
sign = -sign
}
return diff == 0
}
func main() {
num := "24123"
result := isBalanced(num)
fmt.Println(result)
}
fn is_balanced(num: &str) ->bool {
letmut diff = 0;
letmut sign = 1;
forcin num.chars() {
letd = c.to_digit(10).unwrap() asi32;
diff += d * sign;
sign = -sign;
}
diff == 0
}
fnmain() {
letnum = "24123";
letresult = is_balanced(num);
println!("{}", result);
}