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

如何实现字符串中重复数字前缀项保留最后出现项的处理

实现方法与代码示例

核心逻辑很直接:用键值对记录每个数字前缀对应的最新字符组合,后续出现的同前缀组合会覆盖之前的,最后按数字首次出现的顺序拼接结果即可。

步骤拆解

  • 将原始字符串按:分割为单个字符组合列表,比如把"1b:2c:3a:4d:1c:2b"拆成["1b", "2c", "3a", "4d", "1c", "2b"]。
  • 遍历列表,用字典存储每个数字前缀(组合的第一个字符)对应的最新组合——字典的键具有唯一性,后续同键值会直接覆盖旧值,自动实现“保留最后出现项”的需求。
  • 若要和目标结果的顺序一致(保持数字前缀的首次出现顺序),额外用一个列表记录首次出现的数字键,最后按这个顺序从字典中取值拼接。

C# 代码实现

string x = "1b:2c:3a:4d:1c:2b";
// 拆分字符串为单个组合
var parts = x.Split(':');

var latestMap = new Dictionary<char, string>();
var keyOrder = new List<char>();

foreach (var part in parts)
{
    char key = part[0];
    // 仅首次遇到该数字前缀时记录顺序
    if (!latestMap.ContainsKey(key))
    {
        keyOrder.Add(key);
    }
    // 覆盖存储最新的字符组合
    latestMap[key] = part;
}

// 按首次出现顺序拼接成目标字符串
string y = string.Join(":", keyOrder.Select(k => latestMap[k]));
// y 的结果为 "1c:2b:3a:4d"

Python 代码实现

x = "1b:2c:3a:4d:1c:2b"
# 拆分字符串
parts = x.split(':')

latest_map = {}
key_order = []

for part in parts:
    key = part[0]
    if key not in latest_map:
        key_order.append(key)
    latest_map[key] = part

# 按顺序拼接结果
y = ':'.join([latest_map[k] for k in key_order])
# y 的结果为 "1c:2b:3a:4d"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:07:06