Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Go语言刷题篇】Go从0到入门5:Map综合复习、条件语句、循环语句练习

【Go语言刷题篇】Go从0到入门5:Map综合复习、条件语句、循环语句练习

作者头像
程序员洲洲
发布于 2024-06-07 03:14:18
发布于 2024-06-07 03:14:18
20200
代码可运行
举报
文章被收录于专栏:项目文章项目文章
运行总次数:0
代码可运行

前言

  • 本期是学习Golang:Map综合复习、条件语句、循环语句练习,有不懂的地方可以评论进行讨论!
  • 本系列文章采用牛客的核心代码模式进行案例代码提供,帮助大家从0到入门的学习过程中进行配套的刷题~
  • 推荐给大家一款刷题、面试的神器,我也是用这一款神器进行学习的!~链接如下:刷题神器跳转链接
  • 该神器不仅网页界面十分美观,而且操作起来极易上手入门!非常适合新手进行系统性的学习!
  • 小白新手可以通过该神器进行日常的刷题、看大厂面经、学习计算机基础知识、与大牛面对面沟通~ 刷题的图片已经放在下面了~

Q1:Map-字符串构成

问题描述:给定两个字符串des 和src ,判断 des能不能由 src 里面的字符构成,//如果可以,返回 true ;否则返回 false,src中的每个字符只能在 des 中使用一次。

相关知识: 1、for range遍历字符串。 2、cnt[ch-‘a’]隐式转换byte转为int类型。 3、数组的索引可以充当一个map的key,来表示唯一。

示例输入:“ab”,“aab” 示例输出:true

案例代码: 思路:放一个 map 用来保存有哪些元素可以用 用一次-1即可。如果没有直接返回失败。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//import "fmt"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param des string字符串 
 * @param src string字符串 
 * @return bool布尔型
*/
func canConstruct(des string, src string) bool {
	// write code here
	have := make(map[byte]int)
	s := []byte(src)
	for _, i := range s {
		have[i]++
	}

	p := []byte(des)
	for _, i := range p {
		if have[i] == 0 {
			return false
		}
		have[i]--
	}
	return true
}

Q2:Map-不重复的数

问题描述:给定一个数组,找出数组中所有不重复的数字,并按照从小到大的顺序进行输出。

相关知识: 1、map用make方式进行初始化 2、切片可以用[]int{}的方式进行初始化 3、for range遍历切片 4、_,ok :=map[key]的方式判断m中的key是否存在 5、切片用append方式进行追加

示例输入:[1,1,2,2,3,3,4,4,5,5] 示例输出:[]

示例输入:[3,3,2,2,5,5,1,2,2] 示例输出:[1]

案例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import "sort"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 最后要有一个 排序的过程 使用sort提供的排序即可
 * @param s int整型一维数组 
 * @return int整型一维数组
*/
func getNoRepeat(s []int) []int {
	// write code here
	var ans []int
	have := make(map[int]int)
	for _, i := range s {
		if _, ok := have[i]; ok == false {
			have[i] = 1
		}else{
			have[i]++
		}
	}
	for i, j := range have{
		if j == 1{
			ans = append(ans, i)
		}
	}
    sort.Ints(ans) 
	return ans
}

Q3:条件语句-年龄判定

问题描述:已知年龄的分段如下, 婴儿(出生0-1岁)、幼儿(1-4岁)包含1岁、儿童(5-11)包含5岁、少年(12-18)包含12岁、青年(19-35)包含19岁、中年(36-59)包含36岁、老年(60以上)包含60岁 ,输入一个人的年龄,返回相应的年龄段。

相关知识: 1、if 后面可以接任意数量的 else if 语句。condition 的求值由上到下依次进行,直到某个 if 或者 else if 中的 condition 为 true 时,执行相应的代码块。如果没有一个 conditon 为 true,则执行 else 中的代码块。

示例输入:35 示例输出:“青年”

案例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//import "fmt"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * @param age int整型 年龄
 * @return string字符串
*/
func getAge( age int ) string {
	// write code here
	var ans string
	switch {
	case age <1 && age >= 0:
		ans = "婴儿"
	case age >=1 && age <= 4:
		ans = "幼儿"
	case age >= 5 && age <= 11:
		ans = "儿童"
	case age >= 12 && age <= 18:
		ans = "少年"
	case age >= 19 && age <= 35:
		ans = "青年"
	case age >=36 && age <=59:
		ans = "中年"
	case age >= 60:
		ans = "老年"
	}
	return  ans
}

Q4:条件语句-成绩判定

问题描述:根据成绩分数输出成绩等级,判定规则如下 分数低于60 算不及格,60-80 含60 为中等, 80-90含80 为良好,90分以上含90 为优秀。

相关知识: 1、switch 语句用于基于不同条件执行不同动作,每一个 case 分支都是唯一的,从上直下逐一测试,直到匹配为止。 Golang switch 分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。 switch var1 { case val1: … case val2: … default: … }

示例输入:59 示例输出:“不及格”

案例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
func judgeScore(score int) string {
    // write code here
    var grade string
    switch {
    case score < 60:
        grade = "不及格"
    case score >= 60 && score < 80:
        grade = "中等"
    case score >= 80 && score < 90:
        grade = "良好"
    case score >= 90:
        grade = "优秀"
    }
    return grade
}

Q5:循环语句-乘法口诀表

问题描述:打印9*9乘法口诀表。

相关知识: 1、golang中 for 循环中嵌套一个或多个 for 循环,代码格式如下: for [condition | ( init; condition; increment ) | Range] { for [condition | ( init; condition; increment ) | Range] { statement(s) } statement(s) } init: 一般为赋值表达式,给控制变量赋初值; condition: 关系表达式或逻辑表达式,循环控制条件; increment: 一般为赋值表达式,给控制变量增量或减量。 statement:循环语句 2、goalng中,fmt.printf 格式化打印 %d表示数字,-3d 表示左对齐,占 3 位 \n表示下一行。

示例输入: 示例输出:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1*1=1
1*2=2  2*2=4
1*3=3  2*3=6  3*3=9
1*4=4  2*4=8  3*4=12 4*4=16
1*5=5  2*5=10 3*5=15 4*5=20 5*5=25
1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7  2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8  2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9  2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

案例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import "fmt"
func main() {
	fmt.Println("1*1=1")
	for i := 2; i <= 9; i++ {
		for j := 1; j <= i-1; j++ {
			str := fmt.Sprintf("%d*%d=%-3d", j, i,j*i)
            
			fmt.Printf("%s", str)
		}
		str := fmt.Sprintf("%d*%d=%d", i, i, i*i)
		fmt.Printf("%s\n", str)
	}
}

Q6:循环语句-坐标转换

问题描述:已知一个mn二维数组,二维数组中的元素的索引(x,y)可以表示为一个二维坐标,现将这个二维坐标转换为一维坐标,一维坐标=xn+y。返回这个一维数组。

相关知识: 1、数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1 for i := 0; i < len(a); i++ { } for index, v := range a { } 2、长度是数组类型的一部分,因此,var a[5] int和var a[10]int是不同的类型。 3、数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义,长度不能变。

示例输入:[[1,2,3],[4,5,6],[7,8,9]] 示例输出:[1,2,3,4,5,6,7,8,9]

案例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//import "fmt"
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * @param array int整型二维数组 
 * @return int整型一维数组
*/
func transform(array [][]int) []int {
	// write code here
	m := len(array)
	n := len(array[0])
	var arr []int = make([]int, m*n)
	i := 0
	for a := 0; a < m; a++ {
		for b := 0; b < n; b++ {
			arr[i] = array[a][b]
			i++
		}
	}
	return arr
}

后文:刷题神器

点击链接进行跳转注册,开始你的保姆级刷题之路吧!刷题打怪码神之路

另外这里不仅仅可以刷题,你想要的这里都会有,十分适合小白和初学者入门学习~ 1、算法篇(398题):面试必刷100题、算法入门、面试高频榜单 2、数据结构篇(300题):都是非常经典的链表、树、堆、栈、队列、动态规划等 3、语言篇(500题):C/C++、java、python入门算法练习 4、SQL篇(82题):快速入门、SQL必知必会、SQL进阶挑战、面试真题 5、大厂笔试真题:字节跳动、美团、百度、腾讯…掌握经验不在惧怕面试!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【GoLang#2】:基础入门(工具链 | 基础语法 | 内置函数)
Go 编译器是一行一行进行编译的,因此我们一行就写一条语句,不能把多条语句写在一起
IsLand1314
2025/08/08
1230
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
问题描述:学生们都排成了一队,有一个切片表示相应学生们的身高,现随机喊某个位置的人出队,返回出队后的这个切片。比如[2,3,4,5],索引为1的位置的出队,出队后切片为[2,4,5]
程序员洲洲
2024/06/07
1310
【Go语言刷题篇】Go从0到入门4:切片的高级用法、初级复习与Map入门学习
【Go语言刷题篇】Go从0到入门3:逻辑运算、位运算、数组入门、切片入门练习
问题描述:给定两个bool类型变量a,b,求出这两个bool类型变量的逻辑and,or,not a,not b的值,将依次存入一个切片中,然后返回这个切片。
程序员洲洲
2024/06/07
1090
【Go语言刷题篇】Go从0到入门3:逻辑运算、位运算、数组入门、切片入门练习
【嵌入式入门篇】嵌入式0基础沉浸式刷题篇1
问题描述:牛牛和牛妹比较谁的投掷的骰子数比较小,牛牛让牛妹先投,先投掷有一个优先权。只要牛妹的投掷的点数比牛牛小或者等于牛牛的点数,就认为牛妹胜利。能使用宏定义的方式比较牛妹和牛牛输入的两个点数的大小,返回较小的一个吗?(若两数相等,则返回牛妹的数字)
程序员洲洲
2024/06/07
1680
Go 语言基础入门教程 —— 流程控制篇:条件语句
流程控制主要用于设定计算执行的次序,建立程序的逻辑结构。Go 语言的流程控制和 PHP 类似,支持如下的几种流程控制语句:
学院君
2019/08/08
4530
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
本文是《100天精通Golang(基础入门篇)》系列的第8天,介绍了Golang中程序的流程结构和条件语句。通过学习程序的流程结构,包括顺序结构、分支结构和循环结构,以及条件语句如if语句和switch语句,读者可以进一步掌握Golang的基础知识和语法。
猫头虎
2024/04/08
2220
100天精通Golang(基础入门篇)——第8天:Go语言程序的流程结构和条件语句
【Python刷题篇】Python从0到入门2|列表复习、循环语句、条件语句
- 本期是Python从0到入门2|列表复习、循环语句、条件语句,有不懂的地方可以评论进行讨论!
程序员洲洲
2024/06/07
1890
【Go语言刷题篇】Go完结篇|函数、结构体、接口、错误入门学习
- 本期是学习Golang的完结篇:函数、结构体、接口、错误入门学习,有不懂的地方可以评论进行讨论!
程序员洲洲
2024/06/07
1430
第19节 for循环语句
for 循环的 range 格式可以对 slice、map、数组、字符串等进行迭代循环
小尘哥
2019/07/19
4630
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
if-else: 1. 条件表达式不需要括号 2. 大括号必须有,且必须在同一行 3. 支持初始化语句 4. 条件必须是布尔值 switch: 1. 不需要break语句 2. 支持多条件匹配 3. 支持无条件表达式的形式 4. fallthrough关键字用于继续执行下一个case 5. case后可以是表达式 6. default可选,位置灵活
红目香薰
2025/03/13
1570
Go语言学习系列——条件语句:if-else、switch——【坚果派-红目香薰】
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习
相关知识: 1、Go 使用 import 关键字来导入包 2、Go 可以使用 fmt.Sprintf 来格式化字符串,fmt.Sprintf(格式化样式, 参数列表…),格式化样式如下:
程序员洲洲
2024/06/07
2020
【Go语言刷题篇】Go从0到入门2:类型转换、字符求和、运算符运算(加减乘除取余比较符)练习
11.Go语言-流程控制
所谓流程控制就是指“程序怎么执行”或者说“程序执行的顺序”。程序整体上确实是从上往下执行,但又不单纯是从上往下。
面向加薪学习
2022/09/04
6220
【GO语言卵细胞级别教程】03.条件与循环语句
注意,其中fallthrough 表示无条件执行下一个case,也就是无论下一条语句执行的是true还是false都会执行。 2. 实战:switch 后面跟变量
读懂原理
2024/02/09
1650
Go语言循环语句
编程语言中常见的循环语句包括while语句、do-while语句和for语句。但是Go语言中仅有for语言,没有while语句。从功能上讲,但凡while语句能做的事情,for语句也可以实现。因此Go语言统一了for语句和while语句详情见下。
Steve Wang
2020/12/22
4920
从0到1入门Go!!!
相信大家或多或少都听说过 GO 语言,它是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。
Blue_007
2023/10/25
1K0
从0到1入门Go!!!
Go语言学习系列——循环语句:for循环(包括传统for、for-range)——【坚果派-红目香薰】
红目香薰
2025/03/13
1500
Go语言学习系列——循环语句:for循环(包括传统for、for-range)——【坚果派-红目香薰】
Go 控制结构篇:条件语句、分支语句、循环语句和跳转语句
流程控制主要用于设定计算执行的次序,建立程序的逻辑结构。Go 语言的流程控制和其他编程语言类似,支持如下几种流程控制语句:
学院君
2023/03/03
1.7K0
Go 控制结构篇:条件语句、分支语句、循环语句和跳转语句
【Go语言刷题篇】Go从0到入门1:输出、变量、常量、字符串、指针与值的简单案例
相关知识: 1、main函数是go语言程序的默认入口函数(主函数):func main() 2、go也类似其他函数一样,都是使用默认参数args,如fmt.Println(args…)
程序员洲洲
2024/06/07
2190
Go语言条件语句
Go语言的条件语句在概念和流程上与其他编程语言完全相同,因此这里不再赘述,写法上结合了Python和C++,即条件表达式不需要加括号,但仍然保留了花括号。具体例子见下:
Steve Wang
2020/12/22
6350
Go语言中的控制结构:条件语句和循环
在编程中,控制结构是指引导程序如何执行的一系列指令。Go语言提供了多种控制结构来处理条件判断和循环操作。本文将详细介绍Go语言中的条件语句和循环结构,通过实例和代码解释,帮助读者全面理解和应用这些基本构造。
二一年冬末
2024/06/12
2360
推荐阅读
相关推荐
【GoLang#2】:基础入门(工具链 | 基础语法 | 内置函数)
更多 >
交个朋友
加入架构与运维学习入门群
系统架构设计入门 运维体系构建指南
加入架构与运维工作实战群
高并发系统设计 运维自动化实践
加入[架构及运维] 腾讯云技术交流站
云架构设计 云运维最佳实践
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验