我是靠谱客的博主 震动小蘑菇,最近开发中收集的这篇文章主要介绍LeetCode 面试题 01.06 字符串压缩,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  • 分析

    这个题是一个简单的模拟题,从这个题目可以学习的有两点:

    其一:把数转换成对应的字符串用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 字符串压缩所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(64)

评论列表共有 0 条评论

立即
投稿
返回
顶部