443. String Compression - LeetCode

Question

443.?String Compression

Solution

题目大意:把一个有序数组压缩,

思路:遍历数组

Java实现:

public int compress(char[] chars) {
    if (chars.length == 0) return 0;

    StringBuilder sb = new StringBuilder();
    char cur = chars[0];
    int sum = 1;
    for (int i = 1; i <= chars.length; i++) {
        if (i < chars.length && chars[i] == cur) {
            sum++;
        } else {
            sb.append(String.valueOf(cur));
            if (sum > 1) {
                sb.append(sum);
            }
            if (i < chars.length) {
                cur = chars[i];
                sum = 1;
            }
        }
    }
    char[] compressChar = sb.toString().toCharArray();
    for (int i = 0; i < compressChar.length; i++) {
        chars[i] = compressChar[i];
    }
    return sb.length();
}

原文地址:https://www.cnblogs.com/okokabcd/p/9454890.html

时间: 2024-10-25 15:03:56

443. String Compression - LeetCode的相关文章

【leetcode】443. String Compression

题目如下: Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every element of the array should be a character (not int) of length 1. After you are done modifying th

Leetcode 443 String Compression

基础的字符串操作,用两个指针扫一遍就行. class Solution(object): def compress(self,chars): """ :type chars: List[str] :rtype: int """ if not chars: return 0 if len(chars) == 1: return 1 left, right, num = 0, 1, 1 while right <= len(chars): if

443. String Compression 字符串压缩

Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every element of the array should be a character (not int) of length 1. After you are done modifying the inpu

443. String Compression

问题描述: Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every element of the array should be a character (not int) of length 1. After you are done modifying th

443 String Compression 压缩字符串

给定一组字符,使用原地算法将其压缩.压缩后的长度必须始终小于或等于原数组长度.数组的每个元素应该是长度为1 的字符(不是 int 整数类型).在完成原地修改输入数组后,返回数组的新长度.进阶:你能否仅使用O(1) 空间解决问题?示例 1:输入:["a","a","b","b","c","c","c"]输出:返回6,输入数组的前6个字符应该是:["a"

[LC] 443. String Compression

Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every element of the array should be a character (not int) of length 1. After you are done modifying the inpu

LeetCode_443. String Compression

443. String Compression Easy Given an array of characters, compress it in-place. The length after compression must always be smaller than or equal to the original array. Every element of the array should be a character (not int) of length 1. After yo

codeforces 825F F. String Compression dp+kmp找字符串的最小循环节

/** 题目:F. String Compression 链接:http://codeforces.com/problemset/problem/825/F 题意:压缩字符串后求最小长度. 思路: dp[i]表示前i个字符需要的最小次数. dp[i] = min(dp[j]+w(j+1,i)); (0<=j<i); [j+1,i]如果存在循环节(自身不算),那么取最小的循环节x.w = digit((i-j)/x)+x; 否则w = i-j+1; 求一个区间最小循环节: 证明:http://w

Educational Codeforces Round 25 F. String Compression(kmp+dp)

题目链接:Educational Codeforces Round 25 F. String Compression 题意: 给你一个字符串,让你压缩,问压缩后最小的长度是多少. 压缩的形式为x(...)x(...)  x表示(...)这个出现的次数. 题解: 考虑dp[i]表示前i个字符压缩后的最小长度. 转移方程解释看代码,这里要用到kmp来找最小的循环节. 当然还有一种找循环节的方式就是预处理lcp,然后通过枚举循环节的方式. 这里我用的kmp找的循环节.复杂度严格n2. 1 #inclu