`
hcx2013
  • 浏览: 88810 次
社区版块
存档分类
最新评论

基本字符串压缩

 
阅读更多

题目描述

利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。

给定一个string iniString为待压缩的串(长度小于等于3000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。

测试样例
"aabcccccaaa"
返回:"a2b1c5a3"
 
"welcometonowcoderrrrr"
返回:"welcometonowcoderrrrr"



import java.util.*;

public class Zipper {
    public String zipString(String iniString) {
    	int len = count(iniString);
    	if (len > iniString.length()) {
    		return iniString;
    	}
    	char[] res = new char[len];
    	char last = iniString.charAt(0);
		int cnt = 1;
		int index = 0;
		for (int i = 1; i < iniString.length(); i++) {
			if (iniString.charAt(i) == last) {
				cnt++;
			} else {
				res[index++] = last;
				char[] charArray = String.valueOf(cnt).toCharArray();
				for (char ch : charArray) {
					res[index++] = ch;
				}
				last = iniString.charAt(i);
				cnt = 1;
			}
		}
		res[index++] = last;
		char[] charArray = String.valueOf(cnt).toCharArray();
		for (char ch : charArray) {
			res[index++] = ch;
		}
		return String.valueOf(res);
    }

	private int count(String iniString) {
		if (iniString==null || iniString.length()<=0) {
			return 0;
		}
		char last = iniString.charAt(0);
		int cnt = 1;
		int size = 0;
		for (int i = 1; i < iniString.length(); i++) {
			if (iniString.charAt(i) == last) {
				cnt++;
			} else {
				last = iniString.charAt(i);
				size += 1+String.valueOf(cnt).length();
				cnt = 1;
			}
		}
		size += 1+String.valueOf(cnt).length();
		return size;
	}
}
 
分享到:
评论

相关推荐

    Code_笔试题_字符串压缩_

    标题中的“Code_笔试题_字符串压缩_”指的是一个与编程相关的笔试题目,重点在于实现字符串的压缩功能。这类问题通常出现在技术面试或招聘过程的笔试试题中,旨在考察应聘者的编程能力和对数据结构的理解。 描述中...

    字符串压缩程序.rar

    在IT领域,字符串压缩是一种常见的数据压缩技术,用于减少存储空间和提高传输效率。这个名为“字符串压缩程序.rar”的压缩包包含了一个特定的程序代码,它利用了zip算法来实现字符串的压缩。对于初学者来说,这是一...

    字符串压缩

    标题中的“字符串压缩”指的是在计算机科学中,用于减少数据存储空间的一种技术。字符串压缩的主要目的是通过消除数据中的冗余来降低存储需求,这在处理大量文本数据时尤其有用。在编程领域,有许多不同的压缩算法,...

    C语言字符串快速压缩算法代码

    这个算法体现了C语言中对字符串的基本操作,包括字符数组的使用、字符串函数(如`strlen`)的调用以及自定义字符串处理逻辑。同时,它也展示了如何处理多种情况和数据类型之间的转换,这些都是C语言编程中的基础技能...

    Python123之字符串压缩#134865

    一、字符串压缩的基本原理 字符串压缩的主要目的是通过减少冗余信息来减小文件或数据的大小。它基于数据的统计特性,比如某些字符或模式出现的频率,将频繁出现的元素用更短的编码表示。常见的压缩方法有哈夫曼编码...

    LZ78算法实现对任意字符串的压缩与解压

    通过理解和实现LZ78算法,不仅可以学习到数据压缩的基本原理,还能深入理解字符串处理、字典数据结构和位操作等编程技巧。在实际应用中,LZ78算法常被用作其他更高效压缩算法的基础,例如LZW(Lempel-Ziv-Welch)...

    string-yasuo.zip_字符串压缩

    下面我们将深入探讨字符串压缩的基本原理、常见方法以及它在实际应用中的价值。 1. **字符串压缩基本概念**: - 字符串压缩是通过算法将字符串转换为更紧凑的表示形式,减小其占用的存储空间。 - 这种过程通常...

    字符串的压缩和解压

    根据给定文件的信息,本文将围绕“字符串的压缩与解压”这一主题展开,深入探讨字符串压缩和解压的基本原理、实现方法以及应用场景等多方面内容。 ### 字符串压缩和解压概述 字符串的压缩与解压是计算机科学中的一...

    LeetCode 面试题 01.06. 字符串压缩

    利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)...

    第五次作业-字符串压缩数据.zip

    标题 "第五次作业-字符串压缩数据.zip" 暗示我们正在处理一个关于字符串压缩的编程作业或项目。这个压缩数据可能涉及到如何有效地存储和处理大量文本数据,这是计算机科学和信息技术中的一个重要主题。字符串压缩...

    数据库课程设计—对带有大量重复单词的英文文本文件进行字符串压缩和解压缩处理

    这个设计项目的核心目标就是针对这样的文本文件进行有效的字符串压缩和解压缩操作,以节省存储空间并提高数据处理效率。在这个过程中,我们可以学习和应用多种计算机科学和信息技术中的关键概念。 首先,字符串压缩...

    php 字符串压缩方法比较示例

    在PHP中,字符串压缩是一个常见需求,尤其是当我们需要将数据保存到磁盘或者通过网络发送给其他系统时。PHP提供多种函数来压缩字符串,这些函数使用不同的压缩算法来减小数据的体积。在本文中,我们将比较四种PHP...

    获取IP地址 常用加密解密 字符串压缩 端口扫描 域名解析

    3. **字符串压缩**:字符串压缩是减少数据存储空间的一种方法,常使用LZ77、LZW等压缩算法。例如,gzip和deflate是HTTP传输中常见的压缩格式。在编程中,可以使用`zlib`库(Python)或`System.IO.Compression`(C#)...

    StringCompression:字符串压缩类和测试器 Web 应用程序

    一、字符串压缩的基本原理 字符串压缩的目标是通过消除重复信息或使用更短的编码来减少数据的存储需求。主要有两种类型:无损压缩和有损压缩。无损压缩允许完全恢复原始数据,而有损压缩则可能丢失部分信息。在...

    ACM-字符串处理专练

    6. **字符串排序与压缩**:可以使用 radix sort 或 bucket sort 对字符串进行排序,Burrows-Wheeler Transform(BWT)和Run-Length Encoding(RLE)等方法可用于字符串压缩。 7. **字符串哈希**:哈希函数可以快速...

    哈夫曼算法实现字符串压缩-实验报告单.docx

    在实现哈夫曼编码进行字符串压缩的过程中,首先需要统计输入字符串中每个字符的出现频率。这一步是通过遍历字符串并记录每个字符出现的次数来完成的。例如,在这个实验报告中,可能有一个字符计数的阶段,统计了...

    数据结构字符串代码实现

    10. **字符串压缩**:通过对重复字符进行编码,可以实现字符串的压缩,如Run Length Encoding (RLE) 或者霍夫曼编码。 以上只是C语言实现字符串数据结构的一部分知识点,实际应用中还有更多高级主题,如字符串的...

    Java 字符串操作源码实例集.rar

    这些基本操作是Java字符串处理的核心。通过实践这些实例,初学者可以更好地理解字符串操作的原理和用法,为以后的开发打下坚实基础。在压缩包中找到的"codesc.net"可能是包含这些实例代码的文件,打开并运行这些代码...

Global site tag (gtag.js) - Google Analytics