2025-05-27:检查平衡字符串。用go语言,给定一个只包含数字字符(0-9)的字符串 num,如果位于偶数索引位置上的数字

举报
福大大架构师每日一题 发表于 2025/05/27 07:52:34 2025/05/27
【摘要】 2025-05-27:检查平衡字符串。用go语言,给定一个只包含数字字符(0-9)的字符串 num,如果位于偶数索引位置上的数字之和等于位于奇数索引位置上的数字之和,则称该字符串为“平衡字符串”。请判断输入的字符串是否满足这个条件,满足时返回 true,否则返回 false。2 <= num.length <= 100。num 仅由数字 0 - 9 组成。输入:num = “24123”。输...

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。

分步骤描述过程:

  1. 初始化变量

    • 定义一个整数变量 diff 用于存储偶数索引和奇数索引数字之和的差值,初始值为 0。
    • 定义一个整数变量 sign 用于交替表示当前数字是加到 diff 还是从 diff 中减去,初始值为 1(表示加到 diff)。
  2. 遍历字符串

    • 对字符串 num 中的每一个字符 c 进行遍历:
      • 将字符 c 转换为对应的数字 d(通过 c - '0' 实现)。
      • d 乘以 sign 后加到 diff 中。
      • sign 的值取反(即 sign = -sign),这样下一次循环时会从 diff 中减去 d(如果上一次是加的话)。
  3. 判断平衡条件

    • 遍历完成后,检查 diff 的值是否为 0:
      • 如果 diff == 0,说明偶数索引和奇数索引的数字之和相等,返回 true
      • 否则,返回 false

时间复杂度和额外空间复杂度:

  • 时间复杂度:O(n),其中 n 是字符串 num 的长度。因为需要遍历整个字符串一次。
  • 额外空间复杂度:O(1),只使用了常数级别的额外空间(diffsign)。

Go完整代码如下:

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)
}

在这里插入图片描述

Rust完整代码如下:

fn is_balanced(num: &str) -> bool {
    let mut diff = 0;
    let mut sign = 1;
    for c in num.chars() {
        let d = c.to_digit(10).unwrap() as i32;
        diff += d * sign;
        sign = -sign;
    }
    diff == 0
}

fn main() {
    let num = "24123";
    let result = is_balanced(num);
    println!("{}", result);
}

在这里插入图片描述

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。