[编程题]ZOJ
  • 热度指数:6324 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。

输入描述:
每组用例占一行,包含ZOJ三个字符。
1<=length<=100。


输出描述:
对于每组输入,请输出一行,表示按照要求处理后的字符串。
具体可见样例。
示例1

输入

ZZOOOJJJ

输出

ZOJZOJOJ
def zoj(s):
    z, o, j = [], [], []
    iz, io, ij = 0, 0, 0
    res = []
    for i in s:
        if i == 'Z':
            z.append(i)
        elif i == 'O':
            o.append(i)
        else:
            j.append(i)
    

    for i in range(len(s)):
        if iz < len(z):
            res.append(z[iz])
            iz += 1
        if io < len(o):
            res.append(o[io])
            io += 1
        if ij < len(j):
            res.append(j[ij])
            ij += 1

            
    return ''.join(res)
                    

        
    

s = input()
print(zoj(s))

发表于 2025-02-24 22:38:53 回复(0)
from itertools import zip_longest

def select_sortedZOJ(nums):
    list_Z = []
    list_O = []
    list_J = []
    for i,x in enumerate(nums):
        if x == 'Z':
            list_Z.append(x)
        elif x == 'O':
            list_O.append(x)
        else:
            list_J.append(x)
    s = list(zip_longest(list_Z,list_O,list_J))
    return s
nums = input()
#print(select_sortedZOJ(nums))
sm = select_sortedZOJ(nums)
st = ''.join(char for trio in sm for char in trio if char is not None)
print(st)


编辑于 2024-03-24 16:12:26 回复(0)