Python字符串变换

大贤者福尔最近开始研究字符串的变换问题,他提出了一个变换规则,使得一个字符串经过一系列变换之后,生成另一个字符串,他把这两个字符串称作等价串。

具体变换规则为:初始状态下有一个长度为N的字符串A,另有B、C两个空串。变换的规则是:从A串的第一个字符开始,依次取出串中的每个字符,可以选择将取出的字符直接放入字符串B或C的尾部。若字符串A或B中还有字符,可以继续从A中按顺序取出单个字符放入串B或C的尾部,也可以选择从串B的尾部取出单个字符并放入串C的尾部,最终使得串A、B为空串,串C为最终的变换结果,作为串A的等价串。

输入

输入数据有若干组,每组包含两个长度均不超过N(1≤N≤100)的字符串,字符串由大小写字母、数字和其他可打印字符组成。

输出

对每组输入数据,在单独的行中输出如Case x: ans的结果信息,其中ans为对应的结果。若给定的两个串为等价串,ans为Yes,否则为No。

示例输入

ABCDE
ABCDE
ABCDE
CABDE
A
ABCDE

示例输出

Case 1: Yes
Case 2: No
Case 3: No

Python:

import sys
lines = list(map(str.strip, sys.stdin.readlines()))
lines = [[lines[i], lines[i + 1]] for i in range(0, len(lines), 2)]
for id, line in enumerate(lines):
    str_1, str_2 = line
    A, B, C = [x for x in str_1], [], [x for x in str_2]
    while A:
        B.append(A[0])
        A = A[1:]
        while B and B[-1] == C[0]:
            B = B[:-1]
            C = C[1:]
    if C:
        print(f'Case {id + 1}: No')
    else:
        print(f'Case {id + 1}: Yes')

你可能感兴趣的:(Pyhton程序设计,python,开发语言,算法,数据结构)