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

如何在保留负数格式的前提下反转含负数的字符串?

解决方案:反转字符串并保留负数格式

核心思路

把字符串中的负数(-后跟连续数字)视为单个不可分割的单元,普通字符作为单个单元,先将字符串拆分为这样的单元列表,再反转整个列表,最后拼接所有单元即可得到结果。

代码实现(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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 12:25:19