简单的压缩字符串

时间:2021-01-27 09:11:56

最近看到一面试题,题目如下:

  基本的字符串压缩,规则类似把‘aaabcca’给压缩成‘a3bc2 

  这个题目的难点就是对java数组的掌握和对最后一个字符的两种情况的判断,具体代码实现如下

package 上课编程练习;

public class 压缩字符串 {
	static String Handle(String str){
		char ch1[] = new char[str.length()];
		char ch2[] = new char[100];
		for(int i=0;i<str.length();i++)
			ch1[i] = str.charAt(i);
		int k=0;
		for(int i=0;i<ch1.length-1;i++){
			int j=1;
			while(ch1[i]==ch1[i+1]){
				j++;
				i++;
				if(i==ch1.length-1)//防止下标越界
					break;
			}
			if(j!=1){
				ch2[k]=ch1[i];
				k++;
				ch2[k]=(char)(j+48);
				k++;
			}
			else{
				ch2[k]=ch1[i];
				k++;
			}
		}
		//for循环最多读取到倒数第二个所以要判断最后一个
		if(ch1[ch1.length-1]!=ch1[ch1.length-2])
			ch2[k++]=ch1[ch1.length-1];
		String str1 = new String(ch2);
		return str1;
		}
	
	public static void main(String[] args){
		String str1="aaabbbcca";
		String str2 = Handle(str1);
		System.out.println(str2);
	}
	
}

output:

a3b3c2a