【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)
}
相关文章
|
Linux Go iOS开发
Go语言100个实战案例-进阶与部署篇:使用Go打包生成可执行文件
本文详解Go语言打包与跨平台编译技巧,涵盖`go build`命令、多平台构建、二进制优化及资源嵌入(embed),助你将项目编译为无依赖的独立可执行文件,轻松实现高效分发与部署。
1784 162
|
12月前
|
算法 Java Go
【GoGin】(1)上手Go Gin 基于Go语言开发的Web框架,本文介绍了各种路由的配置信息;包含各场景下请求参数的基本传入接收
gin 框架中采用的路优酷是基于httprouter做的是一个高性能的 HTTP 请求路由器,适用于 Go 语言。它的设计目标是提供高效的路由匹配和低内存占用,特别适合需要高性能和简单路由的应用场景。
799 4
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟蒋星熠Jaxonic,Go语言探索者。深耕云计算、微服务与并发编程,以代码为笔,在二进制星河中书写极客诗篇。分享Go核心原理、性能优化与实战架构,助力开发者掌握云原生时代利器。#Go语言 #并发编程 #性能优化
773 43
Go语言深度解析:从入门到精通的完整指南
|
JSON 中间件 Go
Go语言实战指南 —— Go中的反射机制:reflect 包使用
Go语言中的反射机制通过`reflect`包实现,允许程序在运行时动态检查变量类型、获取或设置值、调用方法等。它适用于初中级开发者深入理解Go的动态能力,帮助构建通用工具、中间件和ORM系统等。
890 63
|
12月前
|
Java 编译器 Go
【Golang】(1)Go的运行流程步骤与包的概念
初次上手Go语言!先来了解它的运行流程吧! 在Go中对包的概念又有怎样不同的见解呢?
519 4
|
12月前
|
Java 编译器 Go
【Golang】(5)Go基础的进阶知识!带你认识迭代器与类型以及声明并使用接口与泛型!
好烦好烦好烦!你是否还在为弄不懂Go中的泛型和接口而烦恼?是否还在苦恼思考迭代器的运行方式和意义?本篇文章将带你了解Go的接口与泛型,还有迭代器的使用,附送类型断言的解释
484 3
|
12月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
519 2
|
Cloud Native 安全 Java
Go语言深度解析:从入门到精通的完整指南
🌟 蒋星熠Jaxonic,执着的星际旅人,用Go语言编写代码诗篇。🚀 Go语言以简洁、高效、并发为核心,助力云计算与微服务革新。📚 本文详解Go语法、并发模型、性能优化与实战案例,助你掌握现代编程精髓。🌌 从goroutine到channel,从内存优化到高并发架构,全面解析Go的强大力量。🔧 实战构建高性能Web服务,展现Go在云原生时代的无限可能。✨ 附技术对比、最佳实践与生态全景,带你踏上Go语言的星辰征途。#Go语言 #并发编程 #云原生 #性能优化
|
测试技术 程序员 Go
Go语言测试简明指南:深度解读go test命令
总的来说,go test是 Go 语言中一个强而有力的工具,每个 Go 程序员都应该掌握并把它融入到日常的开发和调试过程中。就像是一个眼镜过滤出的太阳,让我们在宽阔的代码海洋中游泳,而不是淹没。用好它,让我们的代码更健壮,让我们的生产力更强效。
901 23
|
人工智能 测试技术 持续交付
Golang深入浅出之-Go语言中的持续集成与持续部署(CI/CD)
持续集成与持续部署(CI/CD)是现代软件开发的关键实践,尤其适用于Go语言项目。本文探讨了Go项目中常见的CI/CD问题,如测试覆盖不足、版本不一致和构建时间过长,并提供解决方案及GitHub Actions示例代码,帮助开发者优化流程,提升交付效率和质量。
418 5

热门文章

最新文章

推荐镜像

更多