《算法零基础》第20讲:进制转换(2)习题
2021/11/10 1:10:09
本文主要是介绍《算法零基础》第20讲:进制转换(2)习题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
文章参考自:英雄哪里出来
目录
- 前言
- LeetCode 168. Excel表列名称
- 分析
- 代码
- 171. Excel 表列序号
- 分析
- 代码
- 课后习题
- LeetCode 483. 最小好进制
LeetCode 168. Excel表列名称
原题链接:168. Excel表列名称
分析
由题意得excel 表相当于26进制,且是按 A~Z 计数的。
那只需要十进制转26进制,利用整数每次对26取模,再加上字符A,因为取模结果为相对于A的偏移量。
代码
void Reverse(char* str) { int left = 0, right = strlen(str) - 1; while (left < right) { char tmp = str[left]; str[left] = str[right]; str[right] = tmp; left++; right--; } } char * convertToTitle(int columnNumber) { char* ans = (char*)malloc(sizeof(char) * 8); int ansSize = 0; while (columnNumber) { --columnNumber; ans[ansSize++] = columnNumber % 26 + 'A'; columnNumber /= 26; } ans[ansSize] = '\0'; Reverse(ans); return ans; }
171. Excel 表列序号
原题链接:171. Excel 表列序号
分析
对与字符串,从前往后,每一个权位都比后面的一个字符多了一个26的一次方。
那就拿字符串从后往前计算,每次循环把26的次方都带上。
示例:
若字符串为:“ABCD”;
对应的数字为 [1,2,3,4]
那计算过程就为 :
4×26 ^ 0 + 3×26 ^ 1 + 2×26 ^ 2 + 1×26 ^ 3
代码
int titleToNumber(char * columnTitle) { if (NULL == columnTitle) return 0; int ans = 0, tmp = 0; long long secondary = 1; for (int i = strlen(columnTitle) - 1; i >= 0; --i) { tmp = columnTitle[i] - 'A' + 1; ans += tmp * secondary; secondary *= 26; } return ans; }
课后习题
LeetCode 483. 最小好进制
原题链接:483. 最小好进制
这篇关于《算法零基础》第20讲:进制转换(2)习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API