《算法零基础》第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)习题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)