文档章节

简单实现字符串的压缩,减轻传输压力

j
 java__小学生
发布于 2016/10/14 20:44
字数 395
阅读 11
收藏 0

首先说下字符串的压缩的大概意思:比如一字符串"asdfjsdffffffssddsfsdssss",其中有很多相邻的字符是相同的,那么可以通过一个合并,并记录个数的方式,来进行压缩,从而减少字符串的长度。

实现的方法有很多,下面主要讲解通过Map集合来实现这个功能:

      学过java的人都知道,其实字符串的底层是由char数组来维持的,所以我们要先把字符串转换成字符数组。利用Map的键值对的特性,来存储相应的字符和对应的个数。代码如下:

public static String stringCondense(String str) {
        Map<String, Integer> map = new LinkedHashMap<String, Integer>();
        char[] charArray = str.toCharArray();
        char start = charArray[0];
        map.put(start + ":" + 0, 1);
        String key = start + ":" + 0 ;
        for (int i = 1; i < charArray.length; i++) {
            if (charArray[i] == charArray[i - 1]) {
                int value = map.get(key);
                value++;
                map.put(key, value);
            } else {
                key = charArray[i] + ":" + i;
                map.put(charArray[i] + ":" + i, 1);
            }
        }
        String result = "";
        for (String s : map.keySet()) {
            if (map.get(s) != 1) {
                result = result + s.split(":")[0] + map.get(s);
            } else {
                result = result + s.split(":")[0];
            }

        }

        return result;
    }

 

有几个小注意点:

1.推荐使用LinkedMapHashMap,使用HashMap会有料想不到的收获哦!

2.因为map中key唯一,所有key最好加上当前位置,这样不会覆盖,同时也可以查看原来字符数组的排列顺序。

3.这个代码十分简单,如有不足,请多多包涵!!!

 

© 著作权归作者所有

j
粉丝 0
博文 5
码字总数 4262
作品 0
长沙
私信 提问
实现一个简单的基于Token的身份认证

这个例子是基于客户端与webapi进行进行交互的身份认证,当然也适用于其他情况下的身份认证。 简单的交互过程: 1.首先输入用户名、密码进行登录操作 2.服务器验证用户名、密码的正确性,验证...

停车坐爱枫林晚
04/17
0
0
大型网站技术架构(3):WEB 前端性能优化

上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类 这次来说一下 web 前端性能优化,一般来说,web 前端就是应...

不最醉不龟归
2016/12/13
5
0
博客门户系统--X3BLOG

X3-BLOG 是基于XML+XSLT+AJAX技术构建的开源多用户博客门户系统,服务器端采用当前最流行的动态网页开发语言之一ASP.NET(C#) 2.0编写,支持多种数据库,包括SQLSERVER2000SQLSERVER2005ORACL...

匿名
2009/05/30
4.5K
0
深入理解 RPC 消息协议设计

本节我们开始讲解 RPC 的消息协议设计背后的基本原理,了解 RPC 的协议开发背后有哪些需要考虑的基本点。在通晓原理之后,我们就可以自己设计一套协议来开发属于自己的 RPC 系统。 本节主要涉...

Java填坑之路
2018/07/27
0
0
Nodejs教程24:Stream流

阅读更多系列文章请访问我的GitHub博客,示例代码请访问这里。 File System的问题 我们通常会使用File System模块对文件进行读取,如下: 这样操作简单有效,但这也存在一些问题: 占用内存 ...

LeeChen
03/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

佳博标签打印问题-

由于网页打印不行,要么sdk 写成activex,这样浏览器支持又有局限。 因此,采用客户端编写打印服务启动,定时轮询服务端打印队列,从服务的获取打印队列进行打印。 服务端web 点击打印,讲打...

mellen
4分钟前
0
0
Jmeter利用JMXMon插件监控服务器JVM情况

1、Jmeter下载JMXMon插件 2、Jmeter 添加 JMXMon请求 远程监控JVM状态需要在JVM启动时候加上一段参数才行,在tomcat bin目录下找到catalina.sh 在# OS specific support. $var _must_ be set...

覃光林
6分钟前
1
0
Qt编写安防视频监控系统(界面很漂亮)

一、前言 视频监控系统在整个安防领域,已经做到了烂大街的程序,全国起码几百家公司做过类似的系统,当然这一方面的需求量也是非常旺盛的,各种定制化的需求越来越多,尤其是这几年借着人脸...

飞扬青云
10分钟前
1
0
Python的requests库中的Put方式使用

1.后端接口 @PutMapping public ResponseEntity<MyObject> putMyObject( @RequestBody MyObject myObject) { ... } Put请求参数在请求体里面。 1.前端请求 import requestsimpo......

亚林瓜子
11分钟前
0
0
全站加速(DCDN)- IP应用加速产品解读

5月22日下午15点,阿里云全站加速(DCDN)-IP应用加速如期发布。IP应用加速是阿里云自主研发的一款更高效、更安全、更便捷的动态加速产品,结合阿里云CDN本身的资源优势,利用就近接入、智能...

迷你芊宝宝
15分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部