Leetcode No.171 Excel Sheet Column Number Excel表格列数(c++实现)
1. 题目
1.1 英文题目
Given a string columnTitle that represents the column title as appear in an Excel sheet, return its corresponding column number.
1.2 中文题目
给你一个字符串 columnTitle ,表示 Excel 表格中的列名称。返回该列名称对应的列序号。
1.3输入输出
输入 | 输出 |
---|---|
columnTitle = "A" | 1 |
columnTitle = "AB" | 28 |
columnTitle = "ZY" | 701 |
columnTitle = "FXSHRXW" | 2147483647 |
1.4 约束条件
- 1 <= columnTitle.length <= 7
- columnTitle consists only of uppercase English letters.
- columnTitle is in the range ["A", "FXSHRXW"].
2. 分析
2.1 一般算法
这道题类似于26进制转化为十进制的问题,因此可以类比进制转换的“加权求和法”,具体代码如下:
class Solution {
public:
int titleToNumber(string columnTitle) {
int num = 0;
for (int i = columnTitle.size() - 1; i >= 0; i--) {
num += (columnTitle[i] - 'A' + 1) * pow(26, columnTitle.size() - 1 - i);
}
return num;
}
};
2.2 优化求和算法
考虑到pow函数时间复杂度较高,可利用递推进行求解。代码如下:
class Solution {
public:
int titleToNumber(string columnTitle) {
int num = 0;
for (int i = 0; i < columnTitle.size(); i++) {
num = columnTitle[i] - 'A' + 1 + num * 26;
}
return num;
}
};
2.2 c++11优化算法
对于循环部分,可以用c++11进行优化。代码如下:
class Solution {
public:
int titleToNumber(string columnTitle) {
int num = 0;
for (auto element:columnTitle) {
num = element - 'A' + 1 + num * 26;
}
return num;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】