题目:
1.5 利用字符串重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若压缩后的字符串没有变短,则返回原先的字符串。
代码:
/*
* 1.5利用字符串重复出现的次数,编写一个方法,实现基本的字符串压缩功能。
* 比如,字符串aabcccccaaa会变为a2b1c5a3。若压缩后的字符串没有变短,则返回原先的字符串。
*/
package mainshijindian;
import java.nio.charset.spi.CharsetProvider;
import java.util.Scanner;
public class CompressString {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner input = new Scanner(System.in);
String str= input.next();
CompressString CS = new CompressString();
String result=CS.compressString(str);
System.out.println("The Compressed String is :"+result);
}
public String compressString(String str)
{
char[] str_char = str.toCharArray();
char current=str_char[0];
int currentNum = 1;
String result=""+current;
for(int i=1;i<str_char.length;i++)
{
if(str_char[i]==current)
{
currentNum++;continue;
}
else{
result = result+currentNum;
current = str_char[i];
result = result+current;
currentNum=1;
}
if(i==str_char.length-1)
result=result+currentNum;
}
if(result.length()>=2*str.length()){
System.out.println("The result.length is "+result.length()+" and the str.length is "+str.length());
return str;}
else {
System.out.println("The result.length is "+result.length()+" and the str.length is "+str.length());
return result;
}
}
}