当前位置:网站首页>L1-023 输出GPLT(Lua)

L1-023 输出GPLT(Lua)

2022-07-07 15:38:00 有趣就行

题目

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

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

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

输入样例:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt

输出样例:
GPLTGPLTGLTGLGLL

代码

local map = {
    }
local str = io.read()
str = str:upper() --转为大写

--初始化, 防止为未初始化,即为nil
map["G"], map["P"], map["L"], map["T"] = 0, 0, 0, 0
for i = 1, #str do
    local ch = str:sub(i, i)
    if ch == "G" or ch == "P" or ch == "L" or ch == "T" then
        map[ch] = map[ch] + 1
    end
end

local gplt = {
     "G", "P", "L", "T"} --输出顺序
local sum = map["G"] + map["P"] + map["L"] + map["T"]
local s = "" --结果字符串
while sum > 0 do
    for i = 1, 4 do
        if map[gplt[i]] > 0 then
            sum = sum - 1
            s = s .. gplt[i]
            map[gplt[i]] = map[gplt[i]] - 1
        end
    end
end

print(s)
原网站

版权声明
本文为[有趣就行]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_52361859/article/details/125396586