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

如何按指定字符串顺序重新整理随机字符串,实现同字符归组?

问题解决:按指定顺序归组字符串字符

原代码的问题

  • 重复无效的条件判断:所有elif的判断逻辑和第一个if完全一致,程序永远只会执行第一个分支,其余分支根本不会触发
  • replace方法使用错误:每次调用replace会一次性移除原字符串中所有目标字符,但你只追加了单个字符,逻辑完全混乱
  • 循环索引失效:循环遍历原字符串长度时,原字符串在循环中被修改,导致后续索引对应的字符已经不是初始状态的内容

正确实现方法

核心逻辑:先统计原字符串中每个指定字符的出现次数,再按照shuffledColString的顺序,将每个字符重复对应次数后拼接成结果字符串。

基础实现代码

legoString = "YRRBRBYBGRBRGRRRYRGBRBGBBRBG"
shuffledColString = "YRBG"

# 统计每个字符的出现次数
char_counts = {}
for char in legoString:
    char_counts[char] = char_counts.get(char, 0) + 1

# 按指定顺序拼接结果
sorted_result = ""
for target_char in shuffledColString:
    if target_char in char_counts:
        sorted_result += target_char * char_counts[target_char]

print(sorted_result)

更简洁的写法(借助collections.Counter)

from collections import Counter

legoString = "YRRBRBYBGRBRGRRRYRGBRBGBBRBG"
shuffledColString = "YRBG"

char_counts = Counter(legoString)
sorted_result = "".join([char * char_counts[char] for char in shuffledColString if char in char_counts])

print(sorted_result)

效果说明

运行后会得到严格按照YRBG顺序排列的字符串:所有Y连续排列,接着是所有R,然后是B,最后是G,完全满足同字符连续归组的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 21:45:37