java实现压缩字符串和java字符串过滤

这篇文章主要介绍了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]!=''){

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

   }else

    break;   

  }

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

  stringZip(test,len,res2);

  for(int i=0;i   if(res2[i]!=''){

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

   }else

    break;

  }

 }

}

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...