笔试百家云的时候,有个笔试题如下:
给定一个字符串,将该字符串转换,如果出现连续字符将替换成出现次数+该字符的形式
例如:
输入 asdfggghs
输出 1a1s1d1f3g1h1s
这个问题也很好解决,无非就是用下标来标记当前遍历位置,然后将出现次数进行统计,很好解决的问题我遇到了一个问题,
这个次数该如何转换成字符的形式?
加上字符0吗?
count + ‘0’ ?
并不是,当count超过10的时候就会出现错误。
我大脑中想到的第一就是itoa函数
因为这也是经常看到的但是我却很少些过的函数
结果我们来测试看下,
我甚至看了一下手册,根本man 不出来
在后续百度中查到itoa参数,当然笔试凉了
并且很多系统上面甚至没有这个函数。
有没有比itoa函数更方便的函数呢?
当然有, to_string函数直接就能将整型转换成为字符串类型。
此题
正确写法
string Solution(string str)
{
string Ch;
string temp;
for(int i = 0;i < str.size();++i)
{
int count = 1;
int pos = i;
for(int j = i + 1;j < str.size();++j)
{
if(str[i] == str[j])
{
count++;
pos = j;
}
else
{
break;
}
}
Ch = to_string(count);
temp += Ch;
count = 1;
temp.push_back(str[i]);
i = pos;
}
return temp;
}
感悟:
走扎实每一步,任何的马虎,都有可能是致命的。