【LeetCode】 面试题 01.06. Compress String LCCI 字符串压缩(Easy)(JAVA)

【LeetCode】 面试题 01.06. Compress String LCCI 字符串压缩(Easy)(JAVA)

题目地址: https://leetcode.com/problems/rotate-list/

题目描述:

Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccccaaa would become a2blc5a3. If the “compressed” string would not become smaller than the original string, your method should return the original string. You can assume the string has only uppercase and lowercase letters (a - z).

Example 1:

Input: "aabcccccaaa"
Output: "a2b1c5a3"

Example 2:

Input: "abbccd"
Output: "abbccd"
Explanation: 
The compressed string is "a1b2c2d1", which is longer than the original string.

Note:

0 <= S.length <= 50000

题目大意

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

解题方法

非常简单的一题,直接判断连续相同字符个数就行

class Solution {
    public String compressString(String S) {
        StringBuilder res = new StringBuilder();
        for (int i = 0; i < S.length(); i++) {
            int count = 1;
            char ch = S.charAt(i);
            i++;
            while (i < S.length() && ch == S.charAt(i)) {
                i++;
                count++;
            }
            res.append(ch).append(count + "");
            i--;
        }
        if (res.length() < S.length()) {
            return res.toString();
        }
        return S;
    }
}

执行用时 : 10 ms, 在所有 Java 提交中击败了 41.93% 的用户
内存消耗 : 42.1 MB, 在所有 Java 提交中击败了 100.00% 的用户

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值