【百度研发岗实习笔试】
第二题要求构造一个包含n个回文子串的仅由red三个字母组成的字符串。
此题是一个思维题,这里提供一个构造思路。由m个"r"连续构成的字符串,将会有$n*(n+1)/2$个回文子序列,而"red"只能够组成3个回文子序列,那么先对连续的"r"排列,直到最后一个"r"排列后,字符串不能允许更多的"r"排进来。然后就将"edr"排进来,直到满足n个回文子串个数。
// 题目: 有且只有"r" "e" "d"三个字母,给定一个数字n,要求输出由3个字母所组成的包含n个回文串的
// 字符串
// redred
package main
import "fmt"
func main(){
var n int
fmt.Scanf("%d" , &n)
count := 0
for i :=0 ; i < n ; i++{
if (i+1)*i/2 > n{
count = i - 1
break
}
}
s := ""
for i:=0 ; i < count ; i++{
s += "r"
}
res := n - (count + 1)*count/2
for i:=0 ; i<res ; i++{
if i%3 == 0{
s += "e"
}else if i%3 == 1{
s += "d"
}else {
s += "r"
}
}
fmt.Println(s)
}

SHEIN希音公司福利 261人发布