求助:实现符合互补序列规则的字符模式生成函数
求助:实现符合互补序列规则的字符模式生成函数
看起来你现在的代码逻辑没抓住题目里的核心规则哦!题目里的模式是每次把当前已有的模式取互补(也就是把char1换成char2,char2换成char1),然后拼到原模式的后面,而不是简单重复char2再加char1。咱们来一步步修正这个问题:
先明确规则对应的实际生成逻辑:
- n=0: 初始模式是
char1(比如示例里的A) - n=1: 原模式 + 原模式的互补序列 → A + R = AR
- n=2: 原模式(AR) + 原模式的互补序列(RA) → ARRA
- n=3: 原模式(ARRA) + 原模式的互补序列(RAAR) → ARRARAAR
- 以此类推,每一步生成的模式长度都是前一步的2倍,最终n对应的模式长度是2ⁿ。
下面是符合规则的代码实现:
def get_complement(s, char1, char2): # 生成当前字符串的互补序列:char1和char2互换 complement_chars = [] for c in s: complement_chars.append(char2 if c == char1 else char1) return ''.join(complement_chars) def generate_pattern(char1, char2, n): current_pattern = char1 # 从n=1开始,循环n次构建模式 for _ in range(n): complement = get_complement(current_pattern, char1, char2) current_pattern += complement return current_pattern def main(): char1 = input("Enter character 1: ") char2 = input("Enter character 2: ") n = int(input("Enter the value of n: ")) result = generate_pattern(char1, char2, n) print("The obtained pattern:", result) if __name__ == "__main__": main()
测试验证
- 示例1输入:A、R、2 → 输出
ARRA,和题目要求一致。 - 示例2输入:U、W、4 → 输出
UWWUWUUWWUUWUWWU,完全匹配题目给出的结果。
代码关键点说明
get_complement函数专门处理互补序列的生成,逻辑清晰且复用性强。- 主循环执行n次,因为从初始的n=0到目标n,需要进行n次“原模式+互补模式”的拼接操作。
- 每次都是基于完整的前序模式生成互补,严格遵循题目里的递推规则。
备注:内容来源于stack exchange,提问作者FAUZIAH ROZY
相关产品推荐
相关产品推荐

