Kimi LeetCode 3614. 用特殊操作处理字符串 II Go实现

发布时间:2026/7/18 9:11:51
Kimi    LeetCode 3614. 用特殊操作处理字符串 II Go实现 以下是 LeetCode 3614. 用特殊操作处理字符串 II 的 Go 实现。解题思路倒推法与 Java/Python/Rust 版本相同核心思想是1. 正向遍历计算最终字符串长度2. 如果 k 长度返回 .3. 倒序遍历字符串根据操作类型将 k 映射回操作前的位置Go 实现gofunc processStr(s string, k int64) byte {var m int64 0// 第一遍正向计算最终长度for i : 0; i len(s); i {c : s[i]switch c {case *:if m 0 {m--}case #:m 1 // 长度翻倍case %:// 反转不改变长度default:m // 字母}}// k 越界if k m {return .}// 第二遍倒推找第 k 个字符for i : len(s) - 1; i 0; i-- {c : s[i]switch c {case *:// 倒推恢复被删除的字符长度1mcase #:// 倒推长度减半m / 2// 若 k 在右半部分映射到左半部分if k m {k - m}case %:// 倒推反转操作k 变为对称位置k m - 1 - kdefault:// 字母长度-1m--// 若当前位置就是要找的字符if k m {return c}}}return .}复杂度分析- 时间复杂度O(n)两次遍历字符串- 空间复杂度O(1)仅使用常数额外空间关键点- 使用 int64 存储长度因为最终长度可能达到 10^{15}- Go 中字符串可按字节索引s[i]因为输入只包含 ASCII 字符小写字母和 *#%- m 1 等价于 m * 2是左移运算符- switch 语句处理不同字符类型代码清晰且高效- 注意 Go 的 for 循环倒序写法for i : len(s) - 1; i 0; i--