题解 | #字符串合并处理#

字符串合并处理

https://www.nowcoder.com/practice/d3d8e23870584782b3dd48f26cb39c8f

package main

import (
	"fmt"
	"math"
	"sort"
)

func num2byte(n int) byte {
    var bits [4]int
    idx := 3

    for n > 0 {
        bits[idx] = n % 2
        n /= 2
        idx--
    }

    for i,j :=0,len(bits)-1; i<j; i,j=i+1,j-1 {
        bits[i], bits[j] = bits[j], bits[i]
    }

    var sum int
    var powIdx int
    for i:=len(bits)-1; i>=0; i-- {
        sum += bits[i] * int(math.Pow(float64(2.0), float64(powIdx)))
        powIdx++
    }

    if 0 <= sum && sum <= 9 {
        return byte('0' + sum)
    }
    
    return byte('A' + (sum - 10))
}

func byte2byte(ch byte) byte {
    var num int
    if '0' <= ch && ch <= '9' {
        num = int(ch - '0')
    }
    if 'A' <= ch && ch <= 'Z' {
        num = int(ch - 'A') + 10
    }
    if 'a' <= ch && ch <= 'z' {
        num = int(ch - 'a') + 10
    }
    return num2byte(num)
}

func transform(s string) string {
    size := len(s)
    var even []byte
    var odd []byte

    for i:=0; i<size; i++ {
        if i % 2 == 0 {
            even = append(even, s[i])
        } else {
            odd = append(odd, s[i])
        }
    }

    // 分别进行排序
    sort.Slice(even, func(i, j int) bool {
        return even[i] < even[j]
    })
    sort.Slice(odd, func(i, j int) bool {
        return odd[i] < odd[j]
    })

    sb := make([]byte, size)
    i, j, idx := 0, 0, 0
    for ; i<len(even)&&j<len(odd); i,j=i+1,j+1 {
        sb[idx] = even[i]
        sb[idx+1] = odd[j]
        idx = idx + 2
    }
    if i<len(even) {
        sb[idx] = even[i]
    }
    if j<len(odd) {
        sb[idx] = odd[j]
    }

    // 进制转换
    for i:=0; i<size; i++ {
        if '0' <= sb[i] && sb[i] <= '9' || 'A' <= sb[i] && sb[i] <= 'F' || 'a' <= sb[i] && sb[i] <= 'f' {
            sb[i] = byte2byte(sb[i])
        }
    }

    return string(sb)
}

func main() {
    var a string
    var b string

    fmt.Scan(&a, &b)

    fmt.Println(transform(a + b))
}
// 本题输入为空格分割的两个字符串,所以采用 fmt.Scan(&a, &b)

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务