字符串:压缩

    给定一个字符串,对字符串进行压缩,返回压缩后的长度,并把压缩后的字符存入原字符串的前面部分。如字符串['a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'd'],压缩后的结果为ab12c2d,返回长度为7,把压缩结果存入原字符串后的结果为ab12c2dbbbbbbccd。

    public int compress(char[] chars) {
        int index = 0;
        int cur = 0;
        int count = 1;
        while(index < chars.length) {
        		if(index + 1 < chars.length && chars[index] == chars[index + 1]) {
        			index++;
        			count++;
        		}
        		else {
        			chars[cur++] = chars[index++];
        			if(count > 1) {
        				char[] nums = String.valueOf(count).toCharArray();
        				for(char ch : nums) {
        					chars[cur++] = ch;
        				}
        			}
        			count = 1;
        		}
        }
        return cur;
    }

猜你喜欢

转载自blog.csdn.net/xiezongsheng1990/article/details/80246511