3.13号百度回文串 前端算法第三题

结合做题时候的思路以及在牛客看到的其它大佬的帖子完整的code如下

总体思路就是填充,不过生成的结果应该会比看到的帖子略短一些,尤其是在x=n*(n+1)/2+n 的时候

package main

import (
	"fmt"
	"math"
	"strings"
)

func getX(n int) int {
	return (1 + n) * n / 2
}
func getN(x int) int {
	return int((math.Sqrt(float64(x*8+1)) - 1) / 2)
}

func Palindromic(x int) string {
	row := strings.Builder{}
	repeat := func(c byte, n int) {
		for n > 0 {
			row.WriteByte(c)
			n--
		}
	}
	cs := "red"
	p := 0
	for x >0{
		n := getN(x)
		nx := getX(n)
		repeat(cs[p%3], n)
		x -= nx
		p++
	}
	return row.String()
}
func main() {
	r := getX(65)
	d := 55
	e := 6
	fmt.Println(Palindromic(r + d + e))
	fmt.Println(Palindromic(r + d + e + 1))
	fmt.Println(Palindromic(r + d + e + 2))
	fmt.Println(Palindromic(r + d + e + 3))
	fmt.Println(Palindromic(r + d + e + 4))
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeeddd
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeedddr
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeedddre
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeedddrr
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreeeeeeeeeedddd
	d = 0
	e = 0
	fmt.Println(Palindromic(r + d + e))
	fmt.Println(Palindromic(r + d + e + 1))
	fmt.Println(Palindromic(r + d + e + 2))
	fmt.Println(Palindromic(r + d + e + 3))
	fmt.Println(Palindromic(r + d + e + 4))
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrre
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrred
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrree
    // rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrreed
	r = 0
	fmt.Println(Palindromic(r + d + e))
	fmt.Println(Palindromic(r + d + e + 1))
	fmt.Println(Palindromic(r + d + e + 2))
	fmt.Println(Palindromic(r + d + e + 3))
	fmt.Println(Palindromic(r + d + e + 4))
	// r
	// re
	// rr
	// rre
}

#百度笔试##前端##互联网##24届#
全部评论

相关推荐

认真搞学习:28小登的建议,投算法岗不要写什么物理竞赛,互联网+,多写点项目,用什么算法做了什么。还有本科算法是不可能的开发你这个也没有项目啊
点赞 评论 收藏
分享
半解316:内容充实,细节需要修改一下。 1,整体压缩为一页。所有内容顶格。 2,项目描述删除,直接写个人工作量 修改完之后还需要建议,可以私聊
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务