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

简介: L1-023 输出GPLT (20 分) Go语言|Golang给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出。下面给出甲、乙两人的酒量(最多能喝多少杯不倒)和划拳记录,请你判断两个人谁先倒。

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

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


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


输入格式:

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


输出格式:

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


输入样例1:

pcTclnGloRgLrtLhgljkLhGFauPewSKgt

结尾无空行

输出样例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月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
93 4
|
1月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
117 3
|
1月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
95 1
|
3月前
|
Cloud Native 安全 Java
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
270 1
|
3月前
|
Cloud Native Go API
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
330 0
|
3月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
216 0
|
3月前
|
Cloud Native Java 中间件
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
190 0
|
3月前
|
Cloud Native Java Go
Go:为云原生而生的高效语言
Go:为云原生而生的高效语言
279 0
|
Go
Golang语言之管道channel快速入门篇
这篇文章是关于Go语言中管道(channel)的快速入门教程,涵盖了管道的基本使用、有缓冲和无缓冲管道的区别、管道的关闭、遍历、协程和管道的协同工作、单向通道的使用以及select多路复用的详细案例和解释。
573 4
Golang语言之管道channel快速入门篇
|
Go
Golang语言文件操作快速入门篇
这篇文章是关于Go语言文件操作快速入门的教程,涵盖了文件的读取、写入、复制操作以及使用标准库中的ioutil、bufio、os等包进行文件操作的详细案例。
218 4
Golang语言文件操作快速入门篇

推荐镜像

更多