每天一道LeetCode-----将数字用字母表示(本质是26进制转换)
2018-02-22 15:13
423 查看
Excel Sheet Column Title
原题链接Excel Sheet Column Title讲数字转为字母’A’到’Z’表示,对应关系如图
思路:
本质上是将10尽职转为26进制,不同的是模的结果从[0:25]变为[1:26]
假设1<=n%26<=26,那么0<=(n−1)%26<=25,所以可以每次取模时先减一
代码如下
class Solution { public: string convertToTitle(int n) { string res(""); do { res.append(1, 'A' + (n - 1) % 26); /* n - 1的目的是解决模结果为0的情况 */ n = (n - 1) / 26; }while(n); std::reverse(res.begin(), res.end()); return res; } };
Excel Sheet Column Number
原题链接Excel Sheet Column Number上一题的逆序,直接转成26进制即可
代码如下
class Solution { public: int titleToNumber(string s) { return std::accumulate(s.begin(), s.end(), 0, [](auto n, auto value) { return n * 26 + (value - 'A' + 1); } ); } };
相关文章推荐
- (c++)小乐同学学会了用程序做进制转换,异常高兴。小鹏为了不让他骄傲自满,决定出道难点的题目考考他。字母集A到Z,依次表示26到1,26个数字。也就是A=26,B=25...Z=1。他用这些字符来构
- 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
- 每天一道LeetCode-----比较两个字符串,每个字符串被若干'.'分成多个数字,一个个比较
- 进制转换--数字转26字母进制-matlab
- [leetcode] Excel Sheet Column Title (excel表格的数字转字母表示格式) C语言实现
- 每天一道LeetCode-----将数字集转成字母集,计算有多少种转换方式
- 每天一道LeetCode-----将用数组表示的整数加一,两个用字符串表示的(二进制)数相加
- 每天一道LeetCode-----找到有多少个组合加起来和是n,每个组合的数字只能是1或者2
- [LeetCode]415. Add Strings(计算两个字符串表示的数字的和)
- 每天一道LeetCode-----将字符串切分,使每个子串都是回文串,计算所有可能结果和最小切分次数
- Linux中的权限表示---字母表示和数字表示
- 每天一道算法题8 在排序数组中查找和为给定值的两个数字
- 每天一道LeetCode-----计算给定范围内所有数的与运算结果
- 每天一道LeetCode-----KMP算法查找子串,重新实现strStr()函数
- 每天一道LeetCode-----给定字符串s和字符数组words,在s中找到words出现的位置,words内部字符串顺序无要求
- LeetCode 8. String to Integer (atoi) C++ --字符串转为数字,包含正负号、空格、字母、数字等字符
- 每天一道LeetCode--58. Length of Last Word
- 每天一道LeetCode-----数独盘求解
- 每天一道leetcode203-移除链表的元素
- 每天一道LeetCode-----找到一个字符串在另一个字符串出现的位置,字符串内部顺序无要求