精华内容
下载资源
问答
  • 字符串压缩

    千次阅读 2021-02-08 11:09:45
    字符串压缩:利用字符重复出现的次数,编写一种方法,实现基本的字符串 压缩功能。比如,字符串“aabccdd”会变成“a2b1c2d2”。若“压缩”以后的字符 串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小...

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

    示例 1:

    输入:aabcccccddddd
    输出:a2b1c5d5

    示例 2:
    输入:“abcdd”
    输出:“abcdd”
    解释:因为压缩后的字符串为:”a1b1c1d2”,长度大于原字符串

    思路:
    用StringBuilder以及它的append方法来字符串拼接,节约内存; 详情点这里
    将字符串转换成数组,遍历数组;
    向StringBuilder对象ans里添加字符和出现的次数;
    因为我们是当前字符和前一个字符不同时才进行操作,
    所以遍历完数组后别忘了将数组中最后一个元素和出现次数添加;
    比较ans和原字符串的长度。

    package demo3;
    
    public class Demo3 {
        public static void main(String[] args) {
            String s = "aabcde";
            String s2 = "aaaabbccdd";
            new Demo3().zip(s);
            new Demo3().zip(s2);
    
        }
        void zip(String s){
            StringBuilder ans = new StringBuilder();
            char []a = s.toCharArray();
            int num = 1;
    
            for(int i=1;i<s.length();i++){
                if(a[i] != a[i-1]){
                    ans.append(a[i-1]);
                    ans.append(num);
                    num = 1;
                }
                else{
                    num++;
                }
    
            }
            ans.append(a[s.length()-1]);
            ans.append(num);
    
            if(ans.length()<s.length()){
                System.out.println(ans.toString());
            }
            else{
                System.out.println(s);
            }
    
        }
    
    }
    
    

    在这里插入图片描述

    展开全文
  • C 字符串压缩

    2021-03-24 09:23:11
    C 字符串压缩 题目: 字符串压缩,输入字符串只包括a-z字母以及结束标志,编写函数实现对连续出现的相同字符进行压缩,例如:“xxxyyyyz"压缩后字符串为"3x4yz" “yyyyyyy"压缩后为”7y” #include<iostream>...

    C 字符串压缩

    题目:
    字符串压缩,输入字符串只包括a-z字母以及结束标志,编写函数实现对连续出现的相同字符进行压缩,例如:“xxxyyyyz"压缩后字符串为"3x4yz" “yyyyyyy"压缩后为”7y”
    在这里插入图片描述

    #include<iostream>
    
    using namespace std;
    int a[129];
    
    void find(string s)
    {
    	int count=0;
    	for(int i=0;i<s.length();i++)
    	{
    		if(s[i]==s[i+1])count++;
    		else{
    			cout<<s[i]<<count+1;
    			count=0;
    		}
    	}
    }
    int main()
    {
    	string str;
    	cin>>str;
    	
    	find(str);
    //	for(int i=0;i<str.length();i++)
    //	{
    //		a[str[i]]++;
    //	}
    //	
    //		for(int i=0;i<129;i++)
    //	{
    //		if(a[i]!=0)printf("%c%d",i,a[i]);
    //	}
    	return 0;
     } 
    
    展开全文
  • 在做工程过程中,把做工程过程较好的代码片段做个收藏,下边资料是关于Java字符串压缩和解压缩的代码,希望能对大家有较大好处。package com.util;import java.io.ByteArrayInputStream;import java.io....

    在做工程过程中,把做工程过程较好的代码片段做个收藏,下边资料是关于Java字符串压缩和解压缩的代码,希望能对大家有较大好处。

    package com.util;

    import java.io.ByteArrayInputStream;

    import java.io.ByteArrayOutputStream;

    import java.io.IOException;

    import java.util.zip.GZIPInputStream;

    import java.util.zip.GZIPOutputStream;

    public class ZipUtil {

    public static String compress(String str) throws IOException {

    if (str == null || str.length() == 0) {

    return str;

    }

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    GZIPOutputStream gzip = new GZIPOutputStream(out);

    gzip.write(str.getBytes());

    gzip.close();

    return out.toString("ISO-8859-1");

    }

    public static String uncompress(String str) throws IOException {

    if (str == null || str.length() == 0) {

    return str;

    }

    ByteArrayOutputStream out = new ByteArrayOutputStream();

    ByteArrayInputStream in = new ByteArrayInputStream(str

    .getBytes("ISO-8859-1"));

    GZIPInputStream gunzip = new GZIPInputStream(in);

    byte[] buffer = new byte[256];

    int n;

    while ((n = gunzip.read(buffer)) >= 0) {

    out.write(buffer, 0, n);

    }

    return out.toString();

    }

    public static void main(String[] args) throws IOException {

    String str="%5B%7B%22lastUpdateTime%22%3A%222011-10-28+9%3A39%3A41%22%2C%22smsList%22%3A%5B%7B%22liveState%22%3A%221";

    System.out.println("原长度:"+str.length());

    System.out.println("压缩后:"+ZipUtil.compress(str).length());

    System.out.println("解压缩:"+ZipUtil.uncompress(ZipUtil.compress(str)));

    }

    }

    运行结果:

    原长度:104

    压缩后:95

    展开全文
  • 字符串压缩算法

    2021-05-19 11:54:41
    = flag){ // 关键字改变,进行压缩 if(count > 1) sb.append(count - 1).append(flag); else sb.append(flag); // 修改关键字,将计数置1 count = 1; flag = chars[step]; }else{ // 关键字不变,直接...

    import java.io.BufferedReader;

    import java.io.InputStreamReader;

    import java.io.IOException;

    public class Main {

    public static void main(String[] args) throws IOException {

    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

    String str;

    while((str = br.readLine()) != null) {

    char[] chars = str.toCharArray();

    int step = 0;

    int count = 1;

    char flag = chars[step];

    StringBuilder sb = new StringBuilder();

    while(step 

    step ++;

    if(chars[step] != flag){

    // 关键字改变,进行压缩

    if(count > 1)

    sb.append(count - 1).append(flag);

    else

    sb.append(flag);

    // 修改关键字,将计数置1

    count = 1;

    flag = chars[step];

    }else{

    // 关键字不变,直接计数+1

    count ++;

    }

    }

    // 最后一个关键字需要单独处理

    if(count > 1)

    sb.append(count - 1).append(flag);

    else

    sb.append(flag);

    System.out.println(sb.toString());

    }

    }

    }

    展开全文
  • 使用双指针进行字符串压缩实例:public static void zipStr(String str) {char[] c = str.toCharArray();int index = 0;int num = 1;int len = c.length;while (index < len - 1) {while (c[index] == c[index + ...
  • 1.使用Deflater压缩json,Inflater解压jsonDeflater 是同时使用了LZ77算法与哈夫曼编码的一个无损数据压缩算法。image.png我们可以使用 java 提供的 Deflater 和 Inflater 类对 json 进行压缩和解压缩,下面是工具类...
  • Java字符串压缩存储

    2021-03-09 15:55:45
    public static String compress(String str) throws IOException { System.out.println("压缩之前的字符串大小:"+str.length()); if (str == null || str.length() == 0) { return str; } ByteArrayOutputStream ...
  • 1078 字符串压缩与解压 (20分)文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,...
  • Java字符串压缩

    2021-03-18 12:22:33
    java 压缩字符串如果源字符串长度小于64,压缩后的字符会比源字符串长。例如:str.length()=32compressedStr.length()=36/*** 压缩字符串* @param str 要压缩字符串* @return 压缩后的字符串*/public static ...
  • /*** 面试题目:现有一个字符串,其内容仅仅包含a---z,现在要进行网络传输,故需要减少网络传输的* 大小,如何将字符串空间缩小。以下为我给出的答案,可能不对,欢迎探讨。(求最优方式)*/public class Contraction...
  • 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文...
  • XDOJ-73 字符串压缩

    2020-12-25 11:44:03
    字符串压缩 类别 字符串处理 时间限制 1S 内存限制 1000Kb 问题描述 有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。 ...
  • 字符串压缩(xdoj)

    2021-12-06 23:03:27
    字符串数组
  • C语言字符串压缩的算法C语言字符串压缩的算法完整源码(定义,实现,main函数测试) C语言字符串压缩的算法完整源码(定义,实现,main函数测试) #include <iostream> #include <string> std::string ...
  • leetcode之字符串压缩

    2021-03-03 15:56:43
    序本文主要记录一下leetcode之字符串压缩题目字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的...
  • PTA字符串压缩 (10 分)

    千次阅读 2021-04-21 10:27:10
    字符串压缩 (10 分) 本题要求实现一个字符串压缩的简单函数。压缩规则是:如果某个字符x连续出现n(n>1)次,则将这n个字符x替换为nx的形式;否则保持不变。 函数接口定义: void zip( char *p ); 函数zip对p指向...
  • 字符串压缩算法5.11

    2021-05-11 13:06:38
    字符串压缩算法 有一种简单的字符串压缩算法,对于字符串中连续出现的同一字符,用该字符加上连续出现的次数来表示(连续出现次数小于3的不压缩)。 设计程序,将采用该压缩方法压缩后的字符串解压还原为原字符串...
  • 字符串压缩 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只...
  • Java字符串压缩(两种压缩方式)

    千次阅读 2021-03-03 12:51:01
    字符串的两种压缩方式,统计出现次数和只统计相邻元素出现次数
  • “将长度为n的字符串A通过设定的算法,转换为长度为m且小于n的字符串B,字符串B通过相应的算法,可以再次转换为字符串A,该算法称为字符串压缩算法。” 问题 小Q想要给他的朋友发送一个神秘字符串,但他发现字符...
  • 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。...输入第一行给出一个字符,如果是 C 就表示下面的字符串需要被压缩;如果是 D
  • 1078 字符串压缩与解压 (20 分) 文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个C字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复...
  • 73.字符串压缩

    2020-12-31 20:36:04
    有一种简单的字符串压缩算法,对于字符串中连续出现的同一个英文字符,用该字符加上连续出现的次数来表示(连续出现次数小于3时不压缩)。 例如,字符串aaaaabbbabaaaaaaaaaaaaabbbb可压缩为a5b3aba13b4。 请设计一...
  • * 压缩多个字符串 * @param contentMap key是目录+文件名,value是内容 * @return 压缩后的字节数组 * @throws IOException 异常 */ public static byte[] compress(Map<String,String> contentMap)...
  • 字符串压缩 (5分)

    千次阅读 2021-01-26 12:34:22
    本题要求实现一个字符串压缩的简单函数。压缩规则是:如果某个字符x连续出现n(n>1)次,则将这n个字符x替换为nx的形式;否则保持不变。 函数接口定义: void zip( char *p ); 函数zip对p指向的字符串进行压缩操作...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 314,366
精华内容 125,746
关键字:

字符串压缩