笔试题-压缩与解压缩字符串
2016-10-08 16:04
253 查看
题目大致如下:
1. 请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
2. 根据压缩规则编写函数对压缩后的字符串进行解压缩
压缩规则:
实现代码(Java)如下:
1. 请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
2. 根据压缩规则编写函数对压缩后的字符串进行解压缩
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
实现代码(Java)如下:
public class ZipChar { private static final String TAG = "ZipChar"; public static void main(String[] args) { String str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaavcsdssssdfvvvvv"; System.out.println(compressChar(str)); System.out.println(decompressChar(compressChar(str))); } private static String compressChar(String str) { StringBuilder sb = new StringBuilder(); char[] chars = str.toCharArray(); int count = 1; int n = chars.length; for (int i = 1; i < n; i++) { if(chars[i] == chars[i-1]) { count++; } else { if(count > 1) { sb.append(count); } sb.append(chars[i-1]); count = 1; } } if(count > 1) { sb.append(count); sb.append(chars[n-1]); } return sb.toString(); } private static String decompressChar(String str) { StringBuilder sb = new StringBuilder(); char[] chars = str.toCharArray(); int count = 0; for(int i = 0, n = chars.length; i < n; i++) { if((chars[i] + "").matches("[0-9]")) { count = count * 10 + Integer.parseInt(chars[i] + ""); } else if((chars[i] + "").matches("[a-z]")) { if(count == 0) { sb.append(chars[i]); } for(int j = 0; j < count; j++) { sb.append(chars[i]); } count = 0; } } return sb.toString(); } }
相关文章推荐
- Java对字符串的压缩与解压缩
- ubuntu压缩与解压缩、字符串比较常用指令
- 网易游戏笔试2015—字符串压缩
- JAVA字符串压缩解压缩方法
- 笔试笔记————基本字符串压缩
- c#实现linux中gzip压缩解压缩算法:byte[]字节数组,文件,字符串,数据流的压缩解压缩
- JAVA字符串的GZIP压缩解压缩
- 删除字符串中的数字并压缩字符串(神州数码以前笔试题)
- JAVA 字符串压缩解压缩
- python gzip 压缩/解压缩 字符串
- c#字符串压缩与解压缩
- 笔试:删除字符串中的数字并压缩字符串
- (学)Lazarus 字符串压缩、解压缩
- ruby直接字符串压缩与解压缩
- 58集团2017校园招聘笔试题——压缩输出字符串中最多的3个字符
- 2015网易游戏笔试第2题(求出压缩的字符串展开后的个
- ruby直接字符串压缩与解压缩
- Delphi中的字符串压缩与解压缩
- ruby直接字符串压缩与解压缩
- JAVA字符串的GZIP压缩解压缩方法