zoukankan      html  css  js  c++  java
  • 刷题力扣面试题 01.06. 字符串压缩

    题目链接

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/compress-string-lcci
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    题目描述

    字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。

    示例1:

     输入:"aabcccccaaa"
     输出:"a2b1c5a3"
    

    示例2:

     输入:"abbccd"
     输出:"abbccd"
     解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
    

    提示:

    • 字符串长度在[0, 50000]范围内。

    题目分析

    1. 根据题目描述,将字符串压缩
    2. 当字符串的长度小于3时,压缩后的长度仍不会小于原始字符串长度
    3. 遍历原始字符串,当字符变化时,将字符出现次数写入压缩字符串

    代码

    class Solution {
    public:
        string compressString(string S) {
            int SLen = S.length();
            if (SLen < 3) { return S; }
            std::string compress = "";
            int count = 1;
            compress.push_back(S[0]);
            for (int i = 1; i < SLen; ++i) {
                if (S[i] == S[i - 1]) {
                    ++count;
                } else {
                    compress += to_string(count);
                    compress.push_back(S[i]);
                    count = 1;
                }
            }
            compress += to_string(count);
            return compress.length() < SLen ? compress : S;
        }
    };
    
  • 相关阅读:
    Java经典面试题及详解
    linux nc命令使用详解
    终端下更改文件显示颜色
    第二章 IoC Setter注入
    网络抓包wireshark
    一些软件软件开发原则
    开发原则之约定大于配置
    2016第31周六
    2016第31周五
    2016年第31周四
  • 原文地址:https://www.cnblogs.com/HanYG/p/15797860.html
Copyright © 2011-2022 走看看