最近看到一面试题,题目如下:
基本的字符串压缩,规则类似把‘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