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

Swift实现Mexican Wave效果 逐个字符大写生成目标字符串数组

Swift实现墨西哥波浪(Mexican Wave)功能方案

原代码问题排查

  • 错误删除原字符串空格:Mexican Wave规则要求保留原字符串结构,遇到空格仅跳过该位置的大写处理,直接删除空格会破坏原始字符顺序
  • 遍历逻辑错误:按字符值遍历而非按位置遍历,无法准确定位到需要大写的唯一位置
  • 替换逻辑错误:全局替换方法会将字符串内所有相同字符同步转为大写,遇到重复字符(比如hello中的两个l)时会输出错误结果

正确实现代码

func wave(_ input: String) -> [String] {
    let lowerStr = input.lowercased()
    var result = [String]()
    // 遍历每个字符的位置偏移量
    for offset in 0..<lowerStr.count {
        // 转换为字符串索引
        let currentIndex = lowerStr.index(lowerStr.startIndex, offsetBy: offset)
        let currentChar = lowerStr[currentIndex]
        // 空格直接跳过,不生成波浪项
        guard currentChar != " " else { continue }
        // 拼接当前波浪字符串
        let prefix = lowerStr[..<currentIndex]
        let suffix = lowerStr[currentIndex...]
        let currentWave = prefix + currentChar.uppercased() + suffix.dropFirst()
        result.append(String(currentWave))
    }
    return result
}

// 测试示例
print(wave("hello")) // 输出:["Hello", "hEllo", "heLlo", "helLo", "hellO"]
print(wave("hel lo")) // 输出:["Hel lo", "hEl lo", "heL lo", "hel Lo", "hel lO"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:54:05