好未来笔试

好未来这个笔试题难度还可以,比较常规,对我这种菜鸡很友好,基础平台开发&3D图形算法-第一套 14:00-15:30那一场,三道算法a了2.6

  • 版本号大小判断,过了60%,有没有好giegie帮看一下哪里出了问题
  • 三数之和,升序排列一下,转换成两数之和的问题就可以
  • 链表整体后移k个单位,其实就是找到倒数第k个节点,断开,把前面的元素接在尾节点后面就可以
package main

import (
    "fmt"
    "strings"
)

func main() {
    var first, second string
    // fmt.Print("请输入")
    fmt.Scan(&first)
    fmt.Scan(&second)

    fmt.Println(first, second)
    fmt.Println(compare(first, second))
}

func compare(first, second string) int {
    // 以. 进行分割
    firs, secs := strings.Split(first, "."), strings.Split(second, ".")
    //if len(firs) != len(secs) {
    //    return 0
    //}

    for ii := 0; ii < len(firs); ii++ {
                if ii>=len(secs){
                    return 1
                }
        fir := firs[ii]
        sec := secs[ii]

        // 找到初始的有效位 忽略前置的0
        var firstValid, secondValid int
        //first=strings.ReplaceAll(first,".","")
        //second=strings.ReplaceAll(second,".","")
        firBs, secBs := []byte(fir), []byte(sec)
        for i, b := range firBs {
            if b == '0' {
                continue
            }
            firstValid = i
            break
        }
        for i, b := range secBs {
            if b == '0' {
                continue
            }
            secondValid = i
            break
        }

        //if firstValid != secondValid {
        //    return 0
        //}

        for l, r := firstValid, secondValid; ; l, r = l+1, r+1 {
            if l >= len(firBs) || r >= len(secBs) {
                break
            }
            if firBs[l] < secBs[r] {
                return -1
            } else if firBs[l] > secBs[r] {
                return 1
            }
        }
    }

    return 0
}
#好未来笔试讨论##笔经#
全部评论
版本号那题,应该还有类似 1..    1.0  这两个版本号对比要返回0 就是1.0.0 和 1.0 算相等
点赞 回复 分享
发布于 2021-08-08 15:36
lz是什么岗哇
点赞 回复 分享
发布于 2021-08-08 15:45
v1 = "1.0" v2 = "1.0.1" 这种情况你应该过不了把
点赞 回复 分享
发布于 2021-08-08 18:01
捕捉大佬, 大佬咋还投好未来, 会不会直接失业🤨
点赞 回复 分享
发布于 2021-08-19 13:08

相关推荐

评论
1
3
分享
牛客网
牛客企业服务