Go Java算法之Excel表列名称示例详解

 更新时间:2022年08月12日 09:14:56   作者:黄丫丫  
这篇文章主要为大家介绍了Go Java算法之Excel表列名称示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Excel表列名称

给你一个整数 columnNumber ,返回它在 Excel 表中相对应的列名称。

例如:

A -> 1

B -> 2

C -> 3

...

Z -> 26

AA -> 27

AB -> 28

...

  • 示例 1:

输入:columnNumber = 1

输出:"A"

  • 示例 2:

输入:columnNumber = 28

输出:"AB"

  • 示例 3:

输入:columnNumber = 701

输出:"ZY"

  • 示例 4:

输入:columnNumber = 2147483647

输出:"FXSHRXW"  

提示:

1 <= columnNumber <= 231 - 1

方法一:数学(Java)

根据题意可知 'A' = chr(1+ord('A')-1) =》2 = chr(2+ord('A') -1) ,因此类似10进制一样从个位开始匹配

使用循环,首先求余,若余数为0,则说明是26的倍数,则需要columnNumber-= 26,然后将余数=26,然后求倒数第二位,。。。直到最高位即最左边第一位求余为0为止,拼接的字符串翻转即为答案。

class Solution {
    public String convertToTitle(int columnNumber) {
        StringBuffer sb = new StringBuffer();
        while (columnNumber != 0) {
            columnNumber--;
            sb.append((char)(columnNumber % 26 + 'A'));
            columnNumber /= 26;
        }
        return sb.reverse().toString();
    }
}

cloumnNumber:转换位26进制的位数

时间复杂度:O(log26(columnNumber))

空间复杂度:O(1)

方法一:数学(Go)

具体的方法思路已经在上文中表述,详情请看上文内容。

将十进制转二十六进制,先取余再除直到num == 0,由于1 对应 A,所以起始num - 1

  • 先创建一个26进制的数字和其对应的字母map
  • 对总数字取26的余数,通过map获取其相应的字母,注意当余数为0的时候余数是为26
  • 将数字减去余数后除以26,这步主要剔除个位数,将十位数移到个位数,再进行上述的同样处理
func convertToTitle(columnNumber int) string {
    ans := []byte{}
    for columnNumber > 0 {
        columnNumber--
        ans = append(ans, 'A'+byte(columnNumber%26))
        columnNumber /= 26
    }
    for i, n := 0, len(ans); i < n/2; i++ {
        ans[i], ans[n-1-i] = ans[n-1-i], ans[i]
    }
    return string(ans)
}

cloumnNumber:转换位26进制的位数

时间复杂度:O(log26(columnNumber))

空间复杂度:O(1)

以上就是Go Java算法之Excel表列名称示例详解的详细内容,更多关于Go Java算法Excel表列名称的资料请关注脚本之家其它相关文章!

相关文章

  • Go语言开发框架反射机制及常见函数示例详解

    Go语言开发框架反射机制及常见函数示例详解

    这篇文章主要为大家介绍了Go语言开发框架反射机制及常见函数示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 解析Go的Waitgroup和锁的问题

    解析Go的Waitgroup和锁的问题

    大家在学习go语言的时候,都知道go语言支持并发,使用 goroutine,使用关键字 go 即可,接下来通过本文给大家分享Go的Waitgroup和锁的问题,需要的朋友可以参考下
    2021-05-05
  • Golang之sync.Pool使用详解

    Golang之sync.Pool使用详解

    这篇文章主要介绍了Golang之sync.Pool使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • Go/C语言LeetCode题解997找到小镇法官

    Go/C语言LeetCode题解997找到小镇法官

    这篇文章主要为大家介绍了Go语言LeetCode题解997找到小镇的法官示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Golang程序如何查找内存泄漏(pprof)

    Golang程序如何查找内存泄漏(pprof)

    该文章详细介绍了如何使用Golang的pprof工具查找内存泄漏,首先,在main包中引入pprof包并设置条件编译,然后编译程序并运行,通过执行gotoolpprof-inuse_space命令,可以进入交互模式并使用top命令查看内存分配最多的函数,如果本机中有源代码
    2024-12-12
  • GPT回答:go语言和C语言切片对比

    GPT回答:go语言和C语言切片对比

    这篇文章主要为大家介绍了GPT回答:go语言和C语言切片对比,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • Go语言使用Redis和Etcd实现高性能分布式锁

    Go语言使用Redis和Etcd实现高性能分布式锁

    这篇文章主要为大家介绍了Go语言使用Redis实现高性能分布式锁示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go语言的结构体还能这么用?看这篇就够了

    Go语言的结构体还能这么用?看这篇就够了

    这篇文章主要为大家详细介绍了Go语言结构体的各个知识点,最后还介绍了空结构体的3种妙用。文中的示例代码讲解详细,希望对大家有所帮助
    2023-02-02
  • Redis BloomFilter布隆过滤器原理与实现

    Redis BloomFilter布隆过滤器原理与实现

    你在开发或者面试过程中,有没有遇到过 海量数据需要查重,缓存穿透怎么避免等等这样的问题呢?下面这个东西超棒,好好了解下,面试过关斩将,凸显你的不一样
    2022-10-10
  • 如何使用go-zero开发线上项目

    如何使用go-zero开发线上项目

    这篇文章主要介绍了如何使用go-zero开发线上项目,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12

最新评论