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

本文共 1084 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    Netty工作笔记0057---Netty群聊系统服务端
    查看>>
    Netty工作笔记0060---Tcp长连接和短连接_Http长连接和短连接_UDP长连接和短连接
    查看>>
    Netty工作笔记0063---WebSocket长连接开发2
    查看>>
    Netty工作笔记0070---Protobuf使用案例Codec使用
    查看>>
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测机制
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架内的宝藏:ByteBuf
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—5.Pipeline和Handler二
    查看>>