package huawei;
import java.util.Scanner;
/**
* 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。
2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。
示例
输入:“cccddecc” 输出:“3c2de2c”
输入:“adef” 输出:“adef”
输入:“pppppppp” 输出:“8p”
关键:怎么获取重复的字符?定义两个变量,表示当前字符和前一个字符,然后比较计数
* @author USER
*
*/
public class CompressString {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String string = in.nextLine();
System.out.println(stringZip(string));
}
private static String stringZip(String string) {
// TODO Auto-generated method stub
char[] ch = string.toCharArray();
String output = "";
char preTemp = ch[0];
char currTemp;
int count = 0;
for (int i = 0; i < ch.length; i++) {
currTemp = ch[i];
if (currTemp == preTemp) {
count++;
}else {
if (count>1) {
output+=count;
}
output+=preTemp;
preTemp = currTemp;
count = 1;
}
if (i == ch.length-1) {//判断是否到末端,因为末端的字符不会输出
if (count >1) {
output+=count;
}
output+=preTemp;
}
}
return output;
}
}
华为机试---字符串的压缩处理
最新推荐文章于 2024-05-10 11:30:13 发布