牛客春招刷题训练营-2025.3.10题解

活动地址: 牛客春招刷题训练营 - 编程打卡活动

简单题 字符串最后一个单词的长度

fmt.Scan 适合读取 简单输入(以空格或换行分隔)。

fmt.Scanln 适合 读取一整行,但不能有带空格的单个变量。

fmt.Scanf 适合 格式化输入,类似 printf 的格式。

如果需要读取带空格的整行字符串,应使用 bufio.NewReader。

  • 使用 for 循环不断读取标准输入中的字符串。
  • fmt.Scan(&s):从标准输入读取一个字符串并存储在变量 s 中。
  • if n == 0 { break }:如果读取的字符数为 0,则跳出循环。
  • fmt.Println(len(s)):输出字符串 s 的长度。
package main

import "fmt"

func main() {
	var s string
	for {
		n, _ := fmt.Scan(&s)
		if n == 0 {
			break
		}
	}
	fmt.Println(len(s))
}

中等题 明明的随机数

  • 根据题目数据范围() 我们可以创建一个能包含该数据范围的布尔数组 a,用于记录每个数字是否出现。
  • 读取 n 个整数,并将对应位置的布尔值设为 true,表示该数字出现过。
  • 最后遍历 1 到 500 的数字,输出布尔数组中值为 true 的位置,即为出现过的数字。
package main

import "fmt"

func main() {
	var n int
	fmt.Scan(&n)
	a := make([]bool, 501)
	for i := 0; i < n; i++ {
		var x int
		fmt.Scan(&x)
		a[x] = true
	}
	for i := 1; i <= 500; i++ {
		if a[i] {
			fmt.Println(i)
		}
	}
}

困难题 坐标移动

  • 初始化坐标:初始化坐标 x 和 y 为 0。
  • 读取输入:读取用户输入的一串指令,存储在字符串 s 中。
  • 分割指令:使用分号 ; 分割输入字符串,得到一个指令数组 ops。
  • 处理每个指令:遍历每个指令 op:如果指令长度为 0,跳过该指令。使用 strconv.Atoi 将指令的数字部分转换为整数 d。检查数字是否在 1 到 99 之间。根据指令的方向部分 (op[0]),更新坐标 x 和 y。
  • 输出结果:输出最终的坐标 (x, y)。
package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {
	x, y := 0, 0
	var s string
	fmt.Scanln(&s)
	ops := strings.Split(s, ";")
	for _, op := range ops {
		if len(op) == 0 {
			continue
		}
		d, _ := strconv.Atoi(op[1:])
		if d >= 1 && d <= 99 {
			switch op[0] {
			case 'A':
				x-=d
			case 'D':
				x+=d
			case 'W':
				y+=d
			case 'S':
				y-=d
			}
		}
		// fmt.Println(d, x, y)
	}
	fmt.Printf("%d,%d\n", x, y)
}

#牛客春招刷题训练营##牛客创作赏金赛#
牛客春招刷题训练营 文章被收录于专栏

爱丽姐真是太好了

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务