如何按指定字符串顺序重新整理随机字符串,实现同字符归组?
问题解决:按指定顺序归组字符串字符
原代码的问题
- 重复无效的条件判断:所有
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
相关产品推荐
相关产品推荐

