本文主要是介绍面试题 01.06. 字符串压缩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目来源:
leetcode题目,网址:面试题 01.06. 字符串压缩 - 力扣(LeetCode)
解题思路:
计算压缩后的字符串长度,如果该长度小于原字符串长度,返回压缩后的字符串,否则返回原字符串。
解题代码:
class Solution {
public:string compressString(string S) {string com="";char pre=S[0];int cnt=1;for(int i=1;i<S.length();i++){if(S[i]!=pre){com+=pre+to_string(cnt);pre=S[i];cnt=1;}else{cnt++;}}com+=pre+to_string(cnt);return com.length()<S.length()?com:S;}
};
总结:
在字符串拼接时,若代码为 com=com+pre+to_string(cnt); 会报超出内存的错误,而使用 com+= pre+to_string(cnt); 时,则不会。这里可能是因为 += 是在 com 字符串的后面直接添加,而
com=com+pre+to_string(cnt); 会新建变量保存 com+pre+to_string(cnt) 的结果,再赋值给 com ,从而导致超出内存限制。
官方题解也是直接模拟。
这篇关于面试题 01.06. 字符串压缩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!