如何在保留负数格式的前提下反转含负数的字符串?
解决方案:反转字符串并保留负数格式
核心思路
把字符串中的负数(-后跟连续数字)视为单个不可分割的单元,普通字符作为单个单元,先将字符串拆分为这样的单元列表,再反转整个列表,最后拼接所有单元即可得到结果。
代码实现(Python)
def reverse_with_negatives(s): parts = [] i = 0 str_len = len(s) while i < str_len: # 识别负数单元:当前是'-'且下一个字符是数字 if s[i] == '-' and i + 1 < str_len and s[i+1].isdigit(): # 找到所有连续的数字字符 end_idx = i + 1 while end_idx < str_len and s[end_idx].isdigit(): end_idx += 1 parts.append(s[i:end_idx]) i = end_idx else: # 普通字符单独加入列表 parts.append(s[i]) i += 1 # 反转单元列表后拼接 return ''.join(reversed(parts))
测试验证
示例1输入:
"stack-1flow"
拆分后的单元列表:['s', 't', 'a', 'c', 'k', '-1', 'f', 'l', 'o', 'w']
反转后拼接结果:"wolf-1kcats"(符合预期)示例2输入:
"-1-2stack-1flow"
拆分后的单元列表:['-1', '-2', 's', 't', 'a', 'c', 'k', '-1', 'f', 'l', 'o', 'w']
反转后拼接结果:"wolf-1kcats-2-1"(符合预期)
为什么这个方法可行?
因为题目明确说明连字符仅用于表示负数,所以我们可以安全地将-后跟连续数字的片段视为整体。相比常规反转会破坏负数格式,这种单元拆分反转的方式既保留了负数的结构,又实现了整体字符串的反转需求,且完全不需要正则表达式。
内容的提问来源于stack exchange,提问作者Bhargav
相关产品推荐
相关产品推荐

