/**
* 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。
* 比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。
* 若压缩后的字符串没有变短,则返回原先的字符串。 给定一个string
* iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,
* 返回一个string,为所求的压缩后或未变化的串。
* */
/**
* 测试样例 "aabcccccaaa" 返回:"a2b1c5a3"
* "welcometonowcoderrrrr" 返回:"welcometonowcoderrrrr"
* */
/**
* 解题思路:
* 遍历字符串所有字符,对每一个字符做统计
* a.如果后一个字符等于前一个字符,统计数加1,
* 直到不相等了,StringBuilder存储该字符和统计数,然后从下一个和再下一个开始比较;
* b.如果后一个字符不等于前一个字符,统计数等于1,然后放到一个StringBuilder存储该字符和统计数,
* 然后从下一个和再下一个开始比较。
* */
public class Zipper {
public String zipString(String iniString) {
int oldLen = iniString.length();
int count = 1;
StringBuilder sb = new StringBuilder();
for(int i=0; i<oldLen-1; i++){
if(iniString.charAt(i+1) == iniString.charAt(i)){
//前后两个字符相等,统计数加1
count++;
}else{
//两个数不等了
//对前一个字符的处理=============start=======
if(i > 0){
//将前一个字符和统计数存储到StringBuilder中
sb.append(iniString.charAt(i));
String countStr = count+"";
for(int j=0; j<countStr.length(); j++){
sb.append(countStr.charAt(j));
}
}else{
//如果是第一个字符和第二个字符不等,直接将该字符存储到sb中.
//并且统计数为1
sb.append(iniString.charAt(i));
sb.append('1');
}
count = 1;//处理完后将统计数置0
//对前一个字符的处理=============end=======
}
if(i == oldLen-2){
//将前一个字符和统计数存储到StringBuilder中
sb.append(iniString.charAt(i+1));
String countStr = count+"";
for(int j=0; j<countStr.length(); j++){
sb.append(countStr.charAt(j));
}
}
}
if(sb.toString().length() >= oldLen)
return iniString;
return sb.toString();
}
public static void main(String[] args) {
Zipper zip = new Zipper();
String iniString = "welcometonowcoderrrrr";
String str = zip.zipString(iniString);
System.out.println(str);
}
}
相关推荐
AC360变频器使用案例
AC360变频器使用案例!
常用字符串压缩方法
如果当前字符串加上字符不在字典中,则将当前字符串的编码添加到结果列表中,并将当前字符串加上字符添加到字典中,并为它分配一个新的编码。在`main`函数中,首先指定要压缩的输入字符串,然后通过调用`bwtTransform`函数进行压缩,并打印压缩后的结果。这样可以实现对重复出现的字符串的压缩。首先,我们对原始字符串进行编码并打印编码后的字符串,然后对编码后的字符串进行解码并打印解码后的字符串。它使用变长编码来表示不同的字符,使频率较高的字符使用较短的编码,频率较低的字符使用较长的编码。
从玩具到工业:手把手教你用Webots仿真Scara抓取(逆解实战篇)
本文详细介绍了如何在Webots仿真环境中实现Scara机械臂的逆解计算与抓取操作,涵盖从环境配置、逆运动学算法到轨迹规划与实时控制的完整流程。通过实战案例演示,帮助读者掌握机械臂逆解的核心技术,并应用于工业自动化场景,提升Scara机械臂的编程与控制能力。
字符压缩
压缩原理 字符压缩的原理其实很简单,就是找出那些重复出现的字符串,然后用更短的符号代替。这是相似性压缩,识别相似性,比如压缩7个’a’,容易实现。在我们的思维里,还有一种字符串也很有规律,比如"abcdefg",它的每个字符值递增,但是这种字符串的压缩不易实现,因为需要识别很多规则,需要先验知识,并不想我们的思维那么简单。 这里提一下香农定理,这是压缩的极限,就是在保证数据还能还原的情况下,也就是无损压缩,压缩后大小的最小值。比如每个字节的数值概率是 0~255,均匀分布每个数值出现的概率 1/256,如果
论文阅读4——一种宽频带圆极化微带天线的设计
论文阅读——一种宽频带圆极化微带天线的设计(现在才觉得开始弄懂了一点,懂了一点之后又更糊涂了……)
2018南京大学计算机夏令营机试
1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...
字符串压缩算法
字符串压缩算法用于减少字符串的存储空间,尤其是在需要传输或保存大量文本数据时。以下是三种常见的字符串压缩算法:RLE、Huffman编码和LZW压缩。
值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏)
这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。
Leetcode 面试题 01.06.字符串压缩(Compress String LCCI)
Leetcode 面试题 01.06.字符串压缩 1 题目描述(Leetcode题目链接) 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 输入:"aabcccccaaa" 输出:"a2b1c5a3" ...
Linux内核配置选项详解及编译过程
在内核编译完成后,可以通过重启系统并选择新编译的内核来使用它。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以在该菜单下选择需要编译进内核的设备驱动,也可以选择将设备驱动编译为模块。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。可以选择需要的网络协议和功能,并根据需要启用或禁用相应的选项。可以选择需要的调试选项,并根据需要启用或禁用相应的功能。可以选择需要的文件系统类型,并根据需要启用或禁用相应的选项。
YOLOv12改进策略【Neck】| arXiv 2024 MAFPN:多分支辅助特征金字塔网络 | 通过双向辅助融合与异构卷积机制,解决传统PAFPN多尺度特征融合不充分与小目标检测不足问题
本文记录的是利用MAFPN颈部结构改进YOLOv12的目标检测网络模型。通过引入双向辅助融合机制优化特征处理流程,在自底向上路径利用 SAF 模块融合主干浅层特征与颈部输出,并保留浅层空间信息,为小目标检测提供更丰富细节;自顶向下路径通过 AAF 模块建立密集连接,聚合浅层高 / 低分辨率层、同级层及前层特征,均衡各层通道数后实现多向梯度信息交互,增强中 / 大目标特征表达。将其应用到中,解决传统特征金字塔在多尺度信息整合中的不足,提升多尺度目标检测的精度与特征表达的丰富性。Multi-Branch Aux
字符串压缩编码
gzip 是比较常见的压缩方式,web 服务中也经常开启 gzip 压缩。HTTP 传输的内容通过 gzip 压缩之后,也可以节省带宽,提高数据传输效率,缺点是要耗费些 CPU。这篇文章还会介绍其他的一些编码方式(pb、base64),从编码后内存占用、编码原理等来说一会。就好像评估一个算法的优劣一样,空间复杂度和时间复杂度不可兼得。通过 gzip 压缩后,降低了存储空间,但也引入了压缩和解压缩的性能开销。在深入 gzip 之前,我们先来拿捏一个软柿子:base64编码。
基于YOLOv8的表面裂痕等缺陷检测:深度学习与UI界面的实践
本文详细介绍了如何使用YOLOv8进行表面裂痕等缺陷检测,并结合图形用户界面展示检测结果。通过YOLOv8的强大能力,我们可以实现高效、准确的表面缺陷检测,提升工业产品的质量控制水平。未来,随着深度学习技术和数据集的不断发展,表面缺陷检测的精度和速度将不断提升,应用领域也将进一步拓展。希望本文的实践能够为深度学习在工业检测领域的应用提供一些启示。
XDOJ字符串压缩
字符串压缩 好题呀! 类别 字符串处理 时间限制 1S 内存限制 1000Kb 问题描述 有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。 例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb可压缩为a5b3aba13b4。 请设计一个程序,将采用该压缩方法得到的字符串解压缩,还原出原字符串并输出...
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
IDEA的使用指南
IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.
字符串压缩(三)之短字符串压缩
一般原因是通用压缩算法维护了被压缩字符串的,用于字符串还原的相关数据结构,而这些数据结构的长度超过了被压缩短字符串的自身长度。就像算法作者们自己说的一样:“在长字符串压缩领域,shoco不想与通用压缩算法竞争,我们的优势是短字符的快速压缩,虽然压缩率很烂!本篇分享了smaz,shoco,unisox2三种短字符串压缩算法,分别探索了它们各自的压缩率与压缩和解压缩性能,结果如下表所示。对短文本的压缩,zstd的压缩率很低,lz4压缩后的文本长度尽然超过了原有字符串的长度。下面分别是它们的压缩结果。
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
字符串压缩
字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串 压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字符 串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字 母(a-z) 示例 1: 输入:aabcccccddddd 输出:a2b1c5d5 示例 2: 输入:“abcdd” 输出:“abcdd” 解释:因为压缩后的字符串为:”a1b1c1d2”,长度大于原字符串 思路: 用StringBuilder以及它的append方法来字符串拼接,
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
字符串—压缩字符串
问题 将一个字符串进行压缩,例如 aabcccc 压缩后为a2b1c4如果压缩后字符串没有变短则返回原字符串,保证输入合法。 实现 从前往后顺次进行处理并添加到新字符串中。 /** * 1.5问题: 压缩字符串。例如 aabcccc 压缩后为a2b1c4如果压缩后字符串没有变短则返回原字符串 * 思路:使用StringBuilder进行顺次处理 * time:o(n)...
JAVA处理字符串压缩以及文件压缩
字符串压缩: 之前在做Android客户端开发的时候,需要请求一个字典类型的http请求接口,由于接口json数据过大,达到6M,当时建议后端对接口返回的json数据逻辑进行处理,在服务端将json串压缩,然后在客户端进行解压,最后在将数据显示在客户端。 Java实现字符串压缩API: 压缩算法有多种,我说知道和接触有java I/O自带的zip和gzip两种方式,此次的压缩和解压用到的主要...
java字符串压缩和解压缩(gzip)
java对字符串进行压缩和解压缩 package com.durian.common.tool; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutputStream; /** * gzip 对字符串压缩和解压缩
python 压缩字符串
题目描述: 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 示例1: 输入:"aabcccccaaa" 输出:"a2b1c5a3" 示例2: 输入:"abbccd" 输出:"abbccd" 解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。 提示: 字符串长度在[0, 50000].
JAVA字符串压缩解压缩方法
JAVA字符串压缩解压缩方法 java字符串压缩算法 Java代码 package com.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.
字符串压缩 java_如何在Java中压缩字符串?
如何在Java中压缩字符串?我使用GZIPOutputStream或ZIPOutputStream压缩字符串(我的2222235278130938882小于20),但压缩结果比原始字符串长。在某个站点上,我发现一些朋友说这是因为我的原始字符串太短,因此可以使用GZIPOutputStream压缩更长的字符串。因此,有人可以帮我压缩字符串吗?我的功能是这样的:String compress(Stri...
Java 压缩字符串
问题描述:给定一个字符串,利用字符重复出现的次数压缩字符串(重复的字符只会连续的出现)。例如:aabcccccaaa压缩后的字符串为:a2b1c5a3。 解题方法:扫描字符串并统计重复字符出现的次数,当遇到新的字符时将上一个字符添加并且添加数字。 代码如下: public class 压缩字符串 { public static void main(String[] args){ Strin...
517



被折叠的 条评论
为什么被折叠?



