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

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


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

输入

ZZOOOJJJ

输出

ZOJZOJOJ
while True:
    try:
        inp=list(input().strip())
        #print(inp)
        num1=inp.count('Z')
        #print(num1)
        lenth=len(inp)
        num2=inp.count('O')
        num3=inp.count('J')
        max_num=max(num1,num2,num3)
        re=max_num
        result=['Z','O','J']*re
        #print(result)
        z_num=re-num1
        o_num=re-num2
        j_num=re-num3
        while z_num>0:
            for i in range(re*3-1,-1,-1):
                #print(i)
                if result[i]=='Z':
                    result[i]=''
                    z_num-=1
                    break
        #print(result)
        while o_num>0:
            for i in range(re*3-1,-1,-1):
                #print(i)
                if result[i]=='O':
                    result[i]=''
                    o_num-=1
                    break
        while j_num>0:
            for i in range(re*3-1,-1,-1):
                #print(i)
                if result[i]=='J':
                    result[i]=''
                    j_num-=1
                    break
        print(''.join(result))
    except:
        break
发表于 2019-07-30 09:41:55 回复(0)
try:
    while True:
        string = input()
        numZ = string.count('Z')
        numO = string.count('O')
        numJ = string.count('J')
        result = ""
        for i in range(max(numZ,numO,numJ)):
            if numZ:    #如果该数字不为0
                result += "Z"
                numZ -= 1
            if numO:
                result += "O"
                numO -= 1
            if numJ:
                result += "J"
                numJ -= 1
        print(result)
except Exception:
    pass
编辑于 2018-09-24 22:53:46 回复(0)