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

    2021-03-18 12:22:33
    java 压缩字符串如果源字符串长度小于64,压缩后的字符会比源字符串长。例如:str.length()=32compressedStr.length()=36/*** 压缩字符串* @param str 要压缩的字符串* @return 压缩后的字符串*/public static ...

    java 压缩字符串

    如果源字符串长度小于64,压缩后的字符会比源字符串长。

    例如:

    str.length()=32

    compressedStr.length()=36

    /**

    * 压缩字符串

    * @param str 要压缩的字符串

    * @return 压缩后的字符串

    */

    public static String compress(String str) {

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

    return str;

    }

    GZIPOutputStream gzipOutputStream=null;

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    try {

    gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);

    gzipOutputStream.write(str.getBytes());

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (gzipOutputStream != null) {

    try {

    gzipOutputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    }

    return new sun.misc.BASE64Encoder().encode(byteArrayOutputStream.toByteArray());

    }

    /**

    * 解压缩

    * @param compressedStr 压缩后的字符串

    * @return 解压后的字符串

    */

    public static String uncompress(String compressedStr) {

    if (compressedStr == null) {

    return null;

    }

    byte[] compressed;

    String decompressed=null;

    ByteArrayInputStream byteArrayInputStream = null;

    GZIPInputStream gzipInputStream = null;

    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

    try {

    compressed = new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);

    byteArrayInputStream = new ByteArrayInputStream(compressed);

    gzipInputStream = new GZIPInputStream(byteArrayInputStream);

    byte[] buffer = new byte[1024];

    int offset;

    while ((offset = gzipInputStream.read(buffer)) != -1) {

    byteArrayOutputStream.write(buffer, 0, offset);

    }

    decompressed = byteArrayOutputStream.toString();

    } catch (IOException e) {

    e.printStackTrace();

    } finally {

    if (gzipInputStream != null) {

    try {

    gzipInputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    if (byteArrayInputStream != null) {

    try {

    byteArrayInputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    try {

    byteArrayOutputStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    return decompressed;

    }

    展开全文
  • 这篇文章主要介绍了java实现压缩字符串java字符串过滤,需要的朋友可以参考下题目一:通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符...

    这篇文章主要介绍了java实现压缩字符串和java字符串过滤,需要的朋友可以参考下

    题目一:通过键盘输入一串小写字母(a~z)组成的字符串。

    请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。

    比如字符串“abacacde”过滤结果为“abcde”。

    要求实现函数:

    void stringFilter(const char *pInputStr, long lInputLen, char *pOutputStr);

    【输入】 pInputStr:输入字符串

    lInputLen:输入字符串长度

    【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

    【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

    示例

    输入:“deefd”输出:“def”

    输入:“afafafaf” 输出:“af”

    输入:“pppppppp” 输出:“p”

    main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出

    当前你可以使用其他方法测试,只要保证最终程序能正确执行即可,该函数实现可以任意修改,

    但是不要改变函数原型。一定要保证编译运行不受影响。

    题二:题目描述:

    通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。

    压缩规则:

    1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".

    2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

    要求实现函数:

    void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr);

    【输入】 pInputStr:输入字符串

    lInputLen:输入字符串长度

    【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长;

    【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出

    示例

    输入:“cccddecc” 输出:“3c2de2c”

    输入:“adef” 输出:“adef”

    输入:“pppppppp” 输出:“8p”

    public class Test {

    static void stringFilter( char InputStr[], long len, char OutputStr[]){

    int[] a= new int[26];

    int num=0;

    int j=0;//OutputStr[]计数

    for(int i=0;i

    num = InputStr[i]-'a';

    if(a[num]==0){//没出现过

    OutputStr[j]=InputStr[i];

    j++;

    a[num]=1;

    }

    }

    }

    static void stringZip( char InputStr[], long len, char OutputStr[]){

    char temp=' ';

    int num=1;

    int point=0;

    for(int i=0;i

    if(InputStr[i]==temp){

    num++;

    }else{

    if(num!=1){

    OutputStr[point++]=(char)(num+'0');

    num=1;

    }

    OutputStr[point++]=temp;

    temp=InputStr[i];

    }

    }

    }

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    char [] test={'a','a','a','c','b','b','b','a','a','c','a','d','d','d','c','d','e'};

    long len=test.length;

    char [] res = new char[(int) len];

    stringFilter(test,len,res);

    int j=res.length;

    for(int i=0;i

    if(res[i]!='\0'){

    System.out.print(res[i]);

    }else

    break;

    }

    char[] res2=new char[(int) (2*len)];

    stringZip(test,len,res2);

    for(int i=0;i<2*len;i++){

    if(res2[i]!='\0'){

    System.out.print(res2[i]);

    }else

    break;

    }

    }

    }

    展开全文
  • Java 压缩字符串

    2021-02-25 18:43:01
    /*** 根据byte数组,生成文件** @param bfile* byte数组* @param filePath* 存储路径* @param fileName* 文件名称* @return true:保存成功 false:保存失败*/public static boolean getFile(byte[] bfile, Stri...

    /**

    * 根据byte数组,生成文件

    *

    * @param bfile

    * byte数组

    * @param filePath

    * 存储路径

    * @param fileName

    * 文件名称

    * @return true:保存成功 false:保存失败

    */

    public static boolean getFile(byte[] bfile, String filePath, String fileName) {

    BufferedOutputStream bos = null;

    FileOutputStream fos = null;

    File file = null;

    boolean result = true;

    try {

    File dir = new File(filePath);

    if (!dir.exists() && dir.isDirectory()) {// 判断文件目录是否存在

    dir.mkdirs();

    }

    file = new File(filePath + "\\" + fileName);

    fos = new FileOutputStream(file);

    bos = new BufferedOutputStream(fos);

    bos.write(bfile);

    } catch (Exception e) {

    result = false;

    e.printStackTrace();

    } finally {

    if (bos != null) {

    try {

    bos.close();

    } catch (IOException e1) {

    e1.printStackTrace();

    }

    }

    if (fos != null) {

    try {

    fos.close();

    } catch (IOException e1) {

    e1.printStackTrace();

    }

    }

    }

    return result;

    }

    展开全文
  • JAVA简单压缩字符串

    2021-03-10 09:30:05
    最近参加了一个面试,有道关于java语言进行字符串压缩的面试题,当时仅仅给面试官一个思路了,并没有写代码实现,趁着今天有时间,分享给大家。[code]package org.test;/*** 面试题目:现有一个字符串,其内容仅仅...

    最近参加了一个面试,有道关于java语言进行字符串压缩的面试题,当时仅仅给面试官一个思路了,并没有写代码实现,趁着今天有时间,分享给大家。

    [code]

    package org.test;

    /**

    * 面试题目:现有一个字符串,其内容仅仅包含a---z,现在要进行网络传输,故需要减少网络传输的

    * 大小,如何将字符串空间缩小。以下为我给出的答案,可能不对,欢迎探讨。(求最优方式)

    */

    public class Contraction {

    public static String tempString = "acdesfghsadajfkqsfab";

    /**

    * 利用字节码的空间去进行压缩

    * @param args

    */

    public static void main(String[] args) {

    System.out.println("压缩前字符串内容:"+tempString);

    System.out.println("压缩前字符串大小:"+tempString.length());

    String resultString = compactString(tempString);

    System.out.println("压缩后字符串内容:"+resultString);

    System.out.println("压缩后字符串大小:"+resultString.length());

    String convertString = decompressionString(resultString);

    System.out.println("解压后字符串内容:"+convertString);

    System.out.println("解压后字符串大小:"+convertString.length());

    }

    /**

    * 通过接口compactString()的压缩方式进行解压

    * @param tempString

    * @return

    */

    public static String decompressionString(String tempString){

    char[] tempBytes = tempString.toCharArray();

    StringBuffer sb = new StringBuffer();

    for (int i = 0; i < tempBytes.length; i++) {

    char c = tempBytes[i];

    char firstCharacter = (char) (c >>> 8);

    char secondCharacter = (char) ((byte)c);

    sb.append(firstCharacter);

    if(secondCharacter != 0)

    sb.append(secondCharacter);

    }

    return sb.toString();

    }

    /**

    * 对需要进行压缩的字符串进行压缩,返回一个相对较小的字符串

    * @param tempString

    * @return

    */

    public static String compactString(String tempString) {

    StringBuffer sb = new StringBuffer();

    byte[] tempBytes = tempString.getBytes();

    for (int i = 0; i < tempBytes.length; i+=2) {

    char firstCharacter = (char)tempBytes[i];

    char secondCharacter = 0;

    if(i+1

    secondCharacter = (char)tempBytes[i+1];

    firstCharacter <<= 8;

    sb.append((char)(firstCharacter+secondCharacter));

    }

    return sb.toString();

    }

    }

    [/code]

    写的不好,请多指教,如有更好方式,欢迎探讨,学无止境!!!

    附赠方法 :还有一种方式是做一个映射使得1——26分别代表a-z,并以每个用5 个 binary表示,比例可缩到5/16呢,而不是上面的1/2。

    展开全文
  • 如何在Java压缩字符串?我使用GZIPOutputStream或ZIPOutputStream压缩字符串(我的2222235278130938882小于20),但压缩结果比原始字符串长。在某个站点上,我发现一些朋友说这是因为我的原始字符串太短,因此可以...
  • Java字符串压缩(两种压缩方式)

    千次阅读 2021-03-03 12:51:01
    字符串的两种压缩方式,统计出现次数和只统计相邻元素出现次数
  • 压缩算法进行字符串压缩提前小结:Deflater > gzip > zipDeflater压缩,Inflater解压(较好)import org.apache.commons.codec.binary.Base64;import org.apache.commons.io.output.ByteArrayOutputStream;...
  • JAVA 443. 压缩字符串

    2021-03-10 07:50:34
    给定一组字符,使用原地算法将其压缩压缩后的长度必须始终小于或等于原数组长度。数组的每个元素应该是长度为1的字符(不是 int 整数类型)。在完成原地修改输入数组后,返回数组的新长度。进阶:你能否仅使用O(1) ...
  • 在做工程过程中,把做工程过程较好的代码片段做个收藏,下边资料是关于Java字符串压缩和解压缩的代码,希望能对大家有较大好处。package com.util;import java.io.ByteArrayInputStream;import java.io....
  • My function is like: String compress(String original) throws Exception { } Update: import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPOutputStream; import java...
  • Java压缩字符串工具类

    2021-02-26 17:54:50
    importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.util.zip.GZIPInputStream;importjava.util.zip.GZIPOutputStream;importjava....
  • Java使用压缩库为常规压缩提供了Deflater类。它还提供了DeflaterOutputStream,它使用Deflater类通过压缩(压缩)数据流,然后将压缩后的数据写入另一个输出流来过滤数据流。.../*** 压缩字符串,默认梳utf-8...
  • 应用场景 当字符串太长, 需要将字符串值存入数据库时... * 使用gzip压缩字符串 * @param str 要压缩的字符串 * @return */ public static String compress(String str) { if (str == null || str.length() == 0) {
  • 右指针字符与左指针字符不相等时:将元素及其数量更新在数组中。将左指针指向右指针。 遍历到最后一个字符时也要结算,所以right<=len。 代码 class Solution { public int compress(char[] chars) { int len=...
  • 使用双指针进行字符串压缩实例: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 + ...
  • /*** 面试题目:现有一个字符串,其内容仅仅包含a---z,现在要进行网络传输,故需要减少网络传输的* 大小,如何将字符串空间缩小。以下为我给出的答案,可能不对,欢迎探讨。(求最优方式)*/public class Contraction...
  • Java字符串压缩存储

    2021-03-09 15:55:45
    import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutputStream;public class StringCompre...
  • 给定一组字符,使用原地算法将其压缩压缩后的长度必须始终小于或等于原数组长度。 数组的每个元素应该是长度为1 的字符(不是 int 整数类型)。 在完成原地修改输入数组后,返回数组的新长度。 进阶: 你能否仅...
  • At a high level, doc values are essentially a serializedcolumn-store. As we discussed in the last section, column-stores excel at certain operations because the data is naturally laid out in a fashio....
  • import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.GZIPInputStream;...// 将一个字符串按照zip方式压缩和解压缩pub...
  • packagecom.wy.data.emaildata.util;importorg.apache.commons.io....importjava.io.ByteArrayInputStream;importjava.io.ByteArrayOutputStream;importjava.io.File;importjava.io.IOException;importjava.u...
  • 1.使用Deflater压缩json,Inflater解压...image.png我们可以使用 java 提供的 Deflater 和 Inflater 类对 json 进行压缩和解压缩,下面是工具类package com.guoshikeji.driver95128.utils;import android.supp...
  • 查阅了下资料,总结下面的代码:[coolcode lang="java"]/*** 压缩字符串为 byte[]* 储存可以使用new sun.misc.BASE64Encoder().encodeBuffer(byte[] b)方法* 保存为字符串** @param str 压缩前的文本* @return*/...
  • 问题:数据库中varchar类型的长度设置为5000,通过一个富文本...取数据时候,将数据解压缩即可代码案例如下所示:(一个字符串长度为一万以上,通过压缩后,长度仅为800左右,完全满足存库条件)package vaadin.demo;i...
  • Snappy 压缩原理 Snappy 压缩最终源码 /** Compress the input data and produce a byte array of the uncompressed data Params: data – input array. The input MUST be an array type byteSize – the ...
  • Java使用压缩库为常规压缩提供了Deflater类。它还提供了DeflaterOutputStream,它使用Deflater类通过压缩(压缩)数据流,然后将压缩后的数据写入另一个输出流来过滤数据流。.../*** 压缩字符串,默认梳utf-8...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 115,613
精华内容 46,245
关键字:

压缩字符串java

java 订阅