【百度研发岗实习笔试】

第二题要求构造一个包含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)
}

全部评论
快结束的时候,才想出来这个思路了😭
点赞 回复 分享
发布于 2023-03-14 00:56 上海
m了学习一下
点赞 回复 分享
发布于 2023-03-15 16:09 山东
感谢大佬分享
点赞 回复 分享
发布于 2023-03-15 16:24 四川
这个只能过40%吧,我也是这个思路
点赞 回复 分享
发布于 2023-04-13 08:38 贵州

相关推荐

评论
7
15
分享
牛客网
牛客企业服务