首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2025-05-27:检查平衡字符串。用go语言,给定一个只包含数字字符(0-9)的字符串 num,如果位于偶数索引位置上的数字

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

作者头像
福大大架构师每日一题
发布2025-05-27 09:11:57
发布2025-05-27 09:11:57
13900
代码可运行
举报
运行总次数:0
代码可运行

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. 1. 初始化变量
    • • 定义一个整数变量 diff 用于存储偶数索引和奇数索引数字之和的差值,初始值为 0。
    • • 定义一个整数变量 sign 用于交替表示当前数字是加到 diff 还是从 diff 中减去,初始值为 1(表示加到 diff)。
  2. 2. 遍历字符串
    • • 对字符串 num 中的每一个字符 c 进行遍历:
      • • 将字符 c 转换为对应的数字 d(通过 c - '0' 实现)。
      • • 将 d 乘以 sign 后加到 diff 中。
      • • 将 sign 的值取反(即 sign = -sign),这样下一次循环时会从 diff 中减去 d(如果上一次是加的话)。
  3. 3. 判断平衡条件
    • • 遍历完成后,检查 diff 的值是否为 0:
      • • 如果 diff == 0,说明偶数索引和奇数索引的数字之和相等,返回 true
      • • 否则,返回 false

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

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

Go完整代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
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完整代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
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);
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 分步骤描述过程:
  • 时间复杂度和额外空间复杂度:
  • Go完整代码如下:
  • Rust完整代码如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档