问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用java实现,压缩字符串,例如aaaawwwwe输出4a5we

发布网友 发布时间:2022-04-23 04:02

我来回答

4个回答

热心网友 时间:2023-06-27 00:16

package javase1.day02;
/**
* 1)一种字符串压缩算法
* str ="aaaabbccccddeaaa"
* 压缩为:"4a2b4c2d1e3a"
* 原理实现:
* str = "aaaabbccccddeaaa"
*
* c = str.charAt(i)//c是每个字符
* 1) 初始化
* StringBuilder buf = new StringBuilder();
* int count = 0;代表相同的字符个数
* char ch = str.charAt(0);代表正在统计的相同字符'a'
* 2) 从i=1开始迭代每个字符
* c = str.charAt(i);//c是每个当前字符
* 3) 检查当前字符c与被统计ch是否一致
* 如果一致 count++
* 否则(不一致)
* 向缓冲区buf增加count+ch
* count=0,ch=c;
* 3)没有下个字符就结束
* 4)还有字符串吗?回到2)
*
* 2)实现还原算法
* str = "4a2b4c2d1e3a";
* i
*/
public class Demo5 {
public static void main(String[] args) {
String s = comp("aaaawwwwe");
System.out.println(s);
// System.out.println(decomp(s));

}
public static String comp(String str){
int i = 1;
StringBuilder buf = new StringBuilder();
int count = 1;
char ch = str.charAt(0);
for(;;){
char c = i==str.length() ? '\10':str.charAt(i);
if(c==ch){
count++;
}else{
if(count == 1)
buf.append(ch);
else
buf.append(count).append(ch);
count=1;
ch = c;
}
i++;
if(i==str.length()+1){
break;
}
}
return buf.toString();

}
}

热心网友 时间:2023-06-27 00:17

先建立以个哈希结构,对字符窜进行字符扫描,每遇到一个字符到这个哈希结构里去看看是否存在,如果已经存在了就加1,扫描完毕后,将这个哈希结构按顺序输出就好了

热心网友 时间:2023-06-27 00:17

public String countChar(String str) {
    char[] aa = str.toCharArray();
    int[] ch = new int[255]; // 以扩展ascII码的长度定义整型数组,用于计数,比如a出现一次时,ch[97]就加1,附ascII码表http://wenku.baidu.com/link?url=QtgixHAgMzyo_Ts_bLburo-qcOX7FAhR8vl96BrPbWA05FAbW-SCCARIZfjIBWxDzi-FmWonFjnoRBKMA8jQ1Wg3FDyG_6NZwbf4SZ4IH4C
    for (int i = 0; i < aa.length; i ++) {
        char a = aa[i];
        ch[a] ++; // char型变量用于整型时,java取其ascII码
    }
    String result = "";
    // 计数完成后遍历ch取计数值
    for (int i = 0; i < ch.length; i ++) {
        if (ch[i] > 0) {
            result += ch[i]; // 取计数值
            char c = i; // 取ascII码对应的字符
            result += String.valueOf(c);
        }
    }
    return result;
}

热心网友 时间:2023-06-27 00:18

public class Test1 {
public static void main(String[] args) {
String s = "aaaawwwwe";
System.out.println(fn(s));
}

public static String fn(String s) {
StringBuilder rs = new StringBuilder();
String sTmp = "";
int iTmp = 0;
for (int i = 0; i < s.length(); i++)
{
if (0 == i) {
sTmp = s.substring(0, 1);
iTmp = 1;
} else {
if (sTmp.equals(s.substring(i, i + 1))) {
iTmp++;
} else {
rs.append("" + iTmp + sTmp);
sTmp = s.substring(i, i + 1);
iTmp = 1;
}
}
}
if (iTmp != 0) {
rs.append("" + iTmp + sTmp);
}
return rs.toString();
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? java项目部署在linux服务器上。想用java程序实现把某些特定文件压缩成rar文件,该如何实现? (下载一个java的压缩包(.rar的)如何eclips上运行。里面有.settings、bin、lib、src文件夹和俩文件)? 为什么JAVA软件压缩包(ZIP RAR)解压后有很多后缀class的文件和文件夹,而没有jar文件 怎样用JAVA解压winrar加密的zip包(不要调用winrar的命令) JAVA 怎么打开RAR压缩文件? Java 如何实现加密rar 文件的解压操作 在LINUX下 用JAVA如何解压rar文件 java如何实现修改压缩包中的文件?RAR格式、Zip格式及7z格式 关于java解压缩文件(rar或者zip),压缩的文件是按文件的原目录来压缩的,并不是在同一个文件夹中。 java中怎么解压rar文件 到指定文件目录中 如何用java操纵rar文件啊? java解压RAR文件的问题 java解压rar文件报错 java 解压rar文件 广州南站晚上九点钟左右有轻轨到榕桂吗? “世界就是人群未散尽处。六榕寺的斋饭还要等一刻钟。 &#8203;&#8203;&#8203;”这句话什么意思 青口榕泰酒店钟点房多少钱? 《csgo》选国际服还是国服? 重庆菜园坝汽车站有到泸州合江县榕山镇的车吗,几点钟有车 东莞石碣汽车客运站到中山榕桂,几点钟有? 如何用java读取客户端上传的rar文件 java怎么读取Zip和RAR里面的文件啊? java 调用winrar命令 生成带默认路径的自解压包和创建桌面图标 JAVA 程序中如何实现对RAR压缩包文件中文件格式的判断? b站怎么关弹幕? 给对方发微信视频聊天,立刻显示对方忙线中是什么意思? 微信显示,对方忙线中,什么意思? 微信视频显示对方忙是什么意思? 微信能设置对方忙线中? 在微信上发视频,提示“对方忙线中”是怎么回事? 微信打电话提示“对方忙线中”是什么意思? 售楼庆元旦祝福语 有关销售楼盘的广告语,还带元旦祝福的 家里有房子出售,需要一个售房广告词 售楼处广告用语 售楼处广告用语有哪些? 想在微信朋友圈里卖房子广告怎么写,朋友们帮帮忙 ktv朋友圈订房广告语有哪些? 我想在朋友圈卖这个,谁给我想个劲爆的广告语 我是做旅游销售,在朋友圈怎么编辑广告语,谢谢。比如:“有出去游玩计划的可以来找我”这种。上档次点 朋友圈帮朋友打广告词有哪些?