本题是进制转换,本身是没啥难度,记录在这里主要是提醒自己记住一个C++的STL函数
题目来源:
问题描述:
Given an integer, return its base 7 string representation.
Example 1:
Input: 100 Output: "202"
Example 2:
Input: -7 Output: "-10"
Note: The input will be in range of [-1e7, 1e7].
我的解决方案:class Solution {
public:
string convertToBase7(int num) {
stringstream ss;
string ret;
int tmp[10],index=0;
if(num<0)
{
num=-num;
ret.append(1,'-');
}
else if(num==0)
ret.append(1,'0');
while(num!=0)
{
tmp[index]=num%7;
num/=7;
index++;
}
for(int i=index-1;i>=0;--i)
{
char ch;
ss<<tmp[i];
ss>>ch;
ret.append(1,ch);
}
return ret;
}
};
思考:
之前遇过类似的int向string转换的问题,记住了用stringstream的方式来处理,不过这道题遇到的连续的int组合成string的情况下,用stringstream就不是那么方便了.引入C++标准库中的一个函数to_string(val),可以直接将val转换成string类型,并返回,可以接受的输入类型有int,unsigned int,float,double等,基本涵盖了常用的纯数字类型.下面摘录一个别人的代码,非常简洁:
string convertToBase7(int n) {
int x = abs(n); string res;
do res = to_string(x%7)+res; while(x/=7);
return (n>=0? "" : "-") + res;
}