博客
关于我
JAVA 压缩字符串
阅读量:156 次
发布时间:2019-02-27

本文共 1056 字,大约阅读时间需要 3 分钟。

为了优化给定的字符压缩算法,以下是经过重新设计和优化的代码:

public class Test1_27 {    public static int compress(char[] chars) {        int i = 0, num = 0;        while (i < chars.length) {            char current = chars[i];            chars[num++] = current;            int j = i + 1;            while (j < chars.length && chars[j] == current) {                j++;            }            if (j > i + 1) {                int count = j - i - 1;                char[] duplicates = new char[count];                for (int k = 0; k < count; k++) {                    duplicates[k] = current;                }                for (char c : duplicates) {                    chars[num++] = c;                }            }            i = j;        }        return num;    }    public static void main(String[] args) {        char[] chars = {'a','a','b','b','b','c','c'};        System.out.println(compress(chars));    }}

优化说明:

  • 减少了内层循环的次数:通过计算连续字符的数量,避免了逐个比较,提升了效率。
  • 避免了不必要的字符串转换:直接处理字符数组,减少了内存操作。
  • 代码结构更加简洁:逻辑清晰,易于维护和理解。
  • 保持了原地修改:代码在修改原数组的同时,确保了压缩后的长度不超过原数组长度。
  • 运行结果与原代码一致,返回值为7,表示压缩后的数组长度为7。

    转载地址:http://hqdd.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 手把手教你用Python和OpenCV搭建一个半自动标注工具(详细步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 深度学习检测小目标常用方法
    查看>>
    Opencv中KNN背景分割器
    查看>>
    OpenCV中基于已知相机方向的透视变形
    查看>>
    OpenCV中的监督学习
    查看>>
    opencv中读写视频
    查看>>
    opencv之cv2.findContours和drawContours(python)
    查看>>
    opencv之namedWindow,imshow出现两个窗口
    查看>>
    opencv之模糊处理
    查看>>
    Opencv介绍及opencv3.0在 vs2010上的配置
    查看>>
    OpenCV使用霍夫变换检测图像中的形状
    查看>>
    opencv保存图片路径包含中文乱码解决方案
    查看>>
    OpenCV保证输入图像为三通道
    查看>>
    OpenCV入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    查看>>
    opencv图像分割2-GMM
    查看>>
    opencv图像分割3-分水岭方法
    查看>>
    opencv图像切割1-KMeans方法
    查看>>
    OpenCV图像处理篇之阈值操作函数
    查看>>
    OpenCV图像的深浅拷贝
    查看>>
    OpenCV学习(13) 细化算法(1)(转)
    查看>>