概述
- 分析
这个题是一个简单的模拟题,从这个题目可以学习的有两点:
其一:把数转换成对应的字符串用to_string()函数,头文件在<string>,下面的函数都是C++11新加的。
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
其二: a += b;的效率要比 a = a + b;的效率高。因为 a+=b 是直接在a上加b,而 a = a + b;则是用一个临时变量temp记录a的值,类似过程:
temp = a;
temp +=b;
a = temp;
多了一次2次拷贝。放到这个题中,拷贝的是字符串,所以会超时。
- 代码
class Solution {
public:
string compressString(string S) {
string ans;
int size = S.length();
if(size < 2) return S;
int num = 1;
char temp = S[0];
for(int i = 1; i < size; i ++){
if(S[i] == temp){
num++;
}else{
ans += temp + to_string(num);// 不使用+= 用算符会超时,这说明+=运算符的效率高
temp = S[i];
num = 1;
}
}
ans += temp + to_string(num);
if(ans.length() >= size) return S;
return ans;
}
};
最后
以上就是震动小蘑菇为你收集整理的LeetCode 面试题 01.06 字符串压缩的全部内容,希望文章能够帮你解决LeetCode 面试题 01.06 字符串压缩所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复