【Go语言入门150题】L1-023 输出GPLT (20 分) Go语言 | Golang
【摘要】
【题解】【PTA团体程序设计天梯赛】
L1-023 输出GPLT (20 分) Go语言|Golang
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPL...
【题解】【PTA团体程序设计天梯赛】
L1-023 输出GPLT (20 分) Go语言|Golang
给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....
这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT
的顺序打印,直到所有字符都被输出。
下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。
输入格式:
输入在一行中给出一个长度不超过10000的、仅由英文字母构成的非空字符串。
输出格式:
在一行中按题目要求输出排序后的字符串。题目保证输出非空。
输入样例1:
pcTclnGloRgLrtLhgljkLhGFauPewSKgt
- 1
结尾无空行
输出样例1:
GPLTGPLTGLTGLGLL
- 1
结尾无空行
思路:
这题我的方法比较暴力,如果先用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)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
文章来源: blog.csdn.net,作者:小生凡一,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_45304503/article/details/119819170
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)