以下是 LeetCode 3614. 用特殊操作处理字符串 II 的 Rust 实现。解题思路倒推法与 Java/Python 版本相同核心思想是1. 正向遍历计算最终字符串长度2. 如果 k 长度返回 .3. 倒序遍历字符串根据操作类型将 k 映射回操作前的位置Rust 实现rustimpl Solution {pub fn process_str(s: String, k: i64) - char {let s s.as_bytes();let mut m: i64 0;// 第一遍正向计算最终长度for c in s.iter() {match c {b* m 0.max(m - 1),b# m 1, // 长度翻倍b% {}, // 反转不改变长度_ m 1, // 字母}}// k 越界if k m {return .;}let mut k k;// 第二遍倒推找第 k 个字符for c in s.iter().rev() {match c {b* {// 倒推恢复被删除的字符长度1m 1;}b# {// 倒推长度减半m / 2;// 若 k 在右半部分映射到左半部分if k m {k - m;}}b% {// 倒推反转操作k 变为对称位置k m - 1 - k;}_ {// 字母长度-1m - 1;// 若当前位置就是要找的字符if k m {return c as char;}}}}.}}复杂度分析- 时间复杂度O(n)两次遍历字符串- 空间复杂度O(1)仅使用常数额外空间关键点- 使用 i64 存储长度因为最终长度可能达到 10^{15}- Rust 中字符串用 as_bytes() 转为字节数组遍历避免 UTF-8 解码开销- match 语句处理不同字符类型代码清晰且高效- 0.max(m - 1) 等价于 std::cmp::max(0, m - 1)确保长度不会为负