美文网首页
go特殊字符串排序

go特殊字符串排序

作者: 小王同学123321 | 来源:发表于2022-11-09 15:09 被阅读0次
    package main
    
    import (
        "errors"
        "fmt"
        "regexp"
        "sort"
        "strconv"
        "strings"
    )
    
    func SortStrSliceone(newestslice *[]string)(error){
        //
        slicelen := len(*newestslice)
        if slicelen == 1 {
            return nil
        }
        intpattern := regexp.MustCompile(`\d+`)
        var helpmap = make(map[int]string,slicelen)
        var tmpintslice = make([]int,0)
    
        for _,eveline := range *newestslice{
            reveslice := intpattern.FindAllString(eveline,-1)
            evestr := strings.Join(reveslice,"")
            eveint,err := strconv.Atoi(evestr)
            if err != nil{
                return errors.New("版本中存在分整数信息")
            }
            fmt.Println(eveint)
            tmpintslice=append(tmpintslice,eveint)
            _,ok := helpmap[eveint];if !ok{
                helpmap[eveint]=eveline
            }
        }
        sort.Ints(tmpintslice)
        fmt.Println(tmpintslice)
        fmt.Println(helpmap)
        return nil
    }
    
    func fivearrcompare(arr,brr [5]int)(bool){
        var inncomfunc func(int)(bool)
        inncomfunc = func(num int)(bool){
            if num > 4{
                return false
            }else if num <= 4{
                switch  {
                case arr[num] > brr[num]:
                    return true
                case arr[num] < brr[num]:
                    return false
                case arr[num] == brr[num]:
                    return inncomfunc(num + 1)
                }
            }
            return false
        }
        res := inncomfunc(0)
        return res
    }
    
    func SortStrSlicetwo(newestslice *[]string)(error){
        //
        slicelen := len(*newestslice)
        if slicelen == 1 {
            return nil
        }
    
        var arrmap = make(map[[5]int]string)
        var needslice = make([][5]int,0)
        for _,eveline := range *newestslice{
            var tmparr = [5]int{}
            eveslice := strings.Split(eveline,"_")
            for i:=0;i<len(eveslice);i++{
                linestr,_ := strconv.Atoi(eveslice[i])
                tmparr[i]=linestr
            }
            arrmap[tmparr]=eveline
            needslice=append(needslice,tmparr)
        }
        fmt.Println(needslice)
        fmt.Println(arrmap)
        for i:=0;i<slicelen;i++{
            max := i
            for j:=i+1;j<slicelen;j++{
                if fivearrcompare(needslice[j],needslice[max]){
                    max=j
                }
            }
            if max != i{
                needslice[max],needslice[i]=needslice[i],needslice[max]
            }
        }
        fmt.Println(needslice)
        fmt.Printf("max:%s\tmin:%s\n",arrmap[needslice[0]],arrmap[needslice[len(needslice)-1]])
        return nil
    }
    
    func main(){
        needsortslice := []string{"100_1","20_3","22_5","34_1","12_1034","10_1001","1010_01","999_100","901_99","999_101","900_100","102_10","10_210","1_3452","102_10_123_345_123","102"}
        SortStrSlicetwo(&needsortslice)
    }
    

    相关文章

      网友评论

          本文标题:go特殊字符串排序

          本文链接:https://www.haomeiwen.com/subject/wzfatdtx.html