当前位置: 首页 > 面试经验 >

百度2024届暑期实习后台开发笔试题-Go解法

优质
小牛编辑
151浏览
2023-03-28

百度2024届暑期实习后台开发笔试题-Go解法

第一题

题目描述

给定一个字符串,判断是否可以排列为“Baidu”

输入描述

输入一个字符串

输出描述

如果能排列为“Baidu”,输出“Yes”,否则输出“No”

Go代码


package main

import "fmt"

func main() {
// 输入t,代表要判断几个字符串
var t int
fmt.Scanf("%d", &t)
// Baidu映射到map
mb := map[rune]int{
'B': 1,
'a': 1,
'i': 1,
'd': 1,
'u': 1,
}
var s string
for i := 0; i < t; i++ {
fmt.Scan(&s)
m := make(map[rune]int)
flag := "Yes"
if len(s) != 5 {
fmt.Println("No")
continue
}

for _, v := range s {
m[v]++
}

for k, v := range mb {
val, ok := m[k]
if !ok {
flag = "No"
break
} else {
if v != val {
flag = "No"
break
}
}
}

fmt.Println(flag)
}
}

第二题

题目描述

要求构造一个包含n个回文子串的仅由red三个字母组成的字符串。

题目分析

这道题当时在纸上画了画,想到一个思路,首先只用r填满字符串。一个r包含一个回文串,rr包含3个回文串,rrr包含6个回文串...

说明n个r包含(n+1) * n/2个回文串。

剩下还差几个回文串,就反过来用d, e, r补齐。

Go代码


package main

import "fmt"

func main() {
// 输入n,表示生成的字符串要包含n个回文串
var n int
fmt.Scan(&n)
// 判断先用多少个r
// n个r组成的字符串"rrr...",包含的回文子串的数量为1+2+3+..+n即(n+1)*n/2
i := 1
for ; i < n; i++ {
if (i+1) * i / 2 > n {
break
}
}

s := ""
for j := 0; j < i-1; j++ {
s += "r"
}

// 数量不够的,用e,d,r填补
count := (i-1) * i / 2
for k := 0; k < n-count; k++ {
if k % 3 == 0 {
s += "d"
} else if k % 3 == 1 {
s += "e"
} else {
s += "r"
}
}
fmt.Println(s)
}

第三题

第三题等有时间做一下,再补充吧

2024暑期实习陆续开始笔试和面试了,还有很多差距和不足。

如果你愿意和我一同进步,就关注我的公众号“程序员王不错”吧,让我们一起在技术进阶之路上同行!

#百度##百度笔试##暑期实习##暑期实习笔试##后台笔试#
 类似资料: