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

如何实现符合要求的ReverseString函数:反转字符串且字母间加下划线(空格除外)

Go语言ReverseString函数问题修复

原代码存在三个核心问题,导致无法通过测试用例:

  • 未保留输入中的空格字符,直接跳过空格,使得输出缺失必要的空格分隔
  • 所有非空格字符后都强制添加下划线,最终结果会多一个冗余下划线,且未正确处理空格与字母的边界
  • 遍历逻辑仅处理非空格字符,没有完整反转整个字符串的字符序列

以下是修正后的代码实现:

package main

import "fmt"

func ReverseString(str string) string {
    // 先反转整个字符串的字符序列,用rune处理多字节字符
    reversed := make([]rune, 0, len(str))
    for _, char := range str {
        reversed = append([]rune{char}, reversed...)
    }

    // 构建结果字符串,按需添加下划线
    var result []rune
    for i, char := range reversed {
        result = append(result, char)
        // 仅当当前字符和下一个字符都不是空格时,添加下划线
        if i < len(reversed)-1 && char != ' ' && reversed[i+1] != ' ' {
            result = append(result, '_')
        }
    }
    return string(result)
}

func main() {
    fmt.Println(ReverseString("Hello World")) // 输出: d_l_r_o_W o_l_l_e_H
    fmt.Println(ReverseString("i am a student")) // 输出: t_n_e_d_u_t_s a m_a i
}

代码逻辑说明

  1. 完整反转字符串:使用rune切片处理,兼容中文等多字节字符,将原字符串的每个字符依次插入切片头部,实现全字符反转
  2. 精准添加下划线:遍历反转后的字符,仅在相邻两个非空格字符之间插入下划线,既满足字母分隔要求,又保留空格的原有位置
  3. 避免冗余下划线:通过判断下一个字符的存在性和类型,确保不会在字符串末尾生成多余的下划线

测试用例验证:输入"Hello World"时,反转后的字符序列为"dlroW olleH",在相邻非空格字符间插入下划线后,得到"d_l_r_o_W o_l_l_e_H",完全符合测试要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 13:10:30