打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【Go语言入门100题】023 输出GPLT (20 分) Go语言 | Golang

【题解】【PTA团体程序设计天梯赛】

L1-023 输出GPLT (20 分) Go语言|Golang

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

下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。

输入格式:

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

输出格式:

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

输入样例1:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

结尾无空行

输出样例1:

GPLTGPLTGLTGLGLL

结尾无空行

思路:

这题我的方法比较暴力,如果先用map进行存储,key是字符,value是数字,然后就一直输出,如果有值,即不等于零的时候就输出,直到全部都没了就退出。

代码如下:

package main

import "fmt"

func main() {
var str string
stdMap := make(map[rune]int)
_,_=fmt.Scan(&str)//GPLT
for _,item := range str { //map进行存储,`key`是字符,`value`是数字
if item == 'G' ||item == 'g' {
stdMap['G']+=1
}else if  item == 'P'||  item == 'p'{
stdMap['P']+=1
}else if item == 'L'||  item == 'l'{
stdMap['L']+=1
}else if item == 'T'||  item == 't'{
stdMap['T']+=1
}
}
s := ""
for {
if stdMap['G'] > 0 {  // 如果这个大于零
s+="G"   // 就让他输出 
stdMap['G']-- // 然后让这个自减
}
if stdMap['P'] > 0 {
s+="P"
stdMap['P']--
}
if stdMap['L'] > 0 {
s+="L"
stdMap['L']--
}
if stdMap['T'] > 0 {
s+="T"
stdMap['T']--
}
if stdMap['G']==0 && stdMap['P']==0  && stdMap['L']==0 && stdMap['T']==0 {
break  // 如果全都没有的话,就直接退出了。
}
}
fmt.Printf("%s",s)
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
湿气重,先四君子丸,再桂附地黄丸,效果让人惊奇! 为什么祛湿先用
广西男子离奇去世,两天后妻子上坟,棺材内传出声音:放我出去!
金庸小说知识大全
女人聊天的暗号,你知道多少?男人一定要看看
【金瓶梅解读】边读边记《金瓶梅》第六十七回 | 古典名著
100个脑筋急转弯,收藏起来跟孩子一起玩
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服