L1-023 输出GPLT(Python3)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。

输入格式:

输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。

输出格式:

在一行中按题目要求输出排序后的字符串。题目保证输出非空。

样例:">样例:">输入样例:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

样例:"输出样例:

GPLTGPLTGLTGLGLL

# 方法一·:
a = input('')
list =['G', 'P', 'L', 'T']
dict = {}
for i in list:
    dict[i] = a.upper().count(i)
myStr = ""
while (sum(dict.values()) != 0):
    for i in list:
        if (dict[i]):
            myStr += i
            dict[i] = dict[i] - 1;
print(myStr)
# 方法二:
def sort_list(arr, outPutArr):
    if not arr:
        return outPutArr
    for i in exlist:
        if i in arr:
            arr.remove(i)
            outPutArr.append(i)
    return sort_list(arr, outPutArr)

exlist = ["G", "P", "L", "T"]
inStr = input().upper()
mylist = re.findall('[GPLT]', inStr)
outPutArr = []
result = sort_list(mylist, outPutArr)
print(''.join(result))
# 方法三:
# 定义筛选字符串
exstr = "GPLT"

def sortWithGen(arr):
    # 当列表 arr 非空时,进行循环
    while arr:
        for i in exstr:
            if i in arr:
                arr.remove(i)
                yield i

inputStr = input().upper()

# 通过列表推导式从 inputStr 中筛选出所有的 G/P/L/T 字符
mylist = [char for char in inputStr if char in exstr]
result = sortWithGen(mylist)
print(f"{''.join(result)}")


版权声明:本文为weixin_41121249原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。