You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为二维字符串切片的元素添加指定数量的后缀零?

修正Go代码实现二维切片元素按规则添加后缀零

需求说明

给二维字符串切片的元素添加后缀零,规则为:每个子切片从最后一个元素到第一个元素,添加的零的数量依次递增1。

  • 输入:[][]string{{"7", "3", "1"}, {"2", "9"}}
  • 预期输出:[][]string{{"700", "30", "1"}, {"20", "9"}}

原代码问题分析

原代码逻辑不符合需求:

  • 外层循环维护的counter让每个子切片的所有元素添加相同数量的零,无法实现子切片内元素零数递增的要求
  • 遍历子切片的顺序是从第一个到最后一个,没有对应“从后往前零数递增”的规则

修改后的代码

package main

import (
    "fmt"
    "strings"
)

func addZero(strs [][]string) [][]string {
    // 创建新切片存储结果,避免修改原输入
    result := make([][]string, len(strs))
    for i, subSlice := range strs {
        subLen := len(subSlice)
        result[i] = make([]string, subLen)
        // 遍历子切片每个元素,计算需要添加的零数
        for j := range subSlice {
            // 零数 = 子切片长度 - 1 - 当前索引,实现从第一个元素到最后一个元素零数递减(即反向递增)
            zeroCount := subLen - 1 - j
            result[i][j] = subSlice[j] + strings.Repeat("0", zeroCount)
        }
    }
    return result
}

func main() {
    input := [][]string{{"7", "3", "1"}, {"2", "9"}}
    fmt.Println(addZero(input)) // 输出:[[700 30 1] [20 9]]
}

核心修改点

  1. 避免修改原输入:创建新的二维切片存储结果,保持函数无副作用,符合Go的最佳实践
  2. 正确计算零的数量:对于子切片中索引为j的元素,零数为subLen - 1 - j,刚好满足:
    • 第一个元素(j=0):零数=子切片长度-1(比如长度为3的子切片,第一个元素加2个零)
    • 最后一个元素(j=subLen-1):零数=0,无需添加零
  3. 逻辑简洁高效:无需反向遍历,通过索引计算即可实现需求中的规则

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 01:05:54