题目描述
实现一个算法来压缩一个字符串。压缩的要求如下:
需要判断压缩能不能节省空间,仅在压缩后字符串比原字符串长度更短时进行压缩。
压缩的格式是将连续相同字符替换为字符 + 数字形式,例如 "AAABCCDDDD" 变为 "A3BC2D4"。
输入描述
输入一行字符串,长度不超过 500.
输出描述
输出一行。若输入的字符串可压缩,则输出压缩后的字符串,否则输出 NO。
输入输出样例
示例
输入
AAABCCDDDD
输出
A3BC2D4
运行限制
最大运行时间:1s
最大运行内存: 256M
源码:
import java.util.Scanner;
public class 压缩字符串 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char[] strings=scanner.next().toCharArray();
boolean flag=false;
for (int i = 1; i < strings.length; i++) {
if (strings[i]==strings[i-1]) {
flag=true;
}
}
if (!flag) {
System.out.println("No");
}else {
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0,j=0; i < strings.length;) {
while(j+1<strings.length && strings[i]==strings[j+1]) j++;
int len=j-i+1;
stringBuffer.append(strings[i]);
if (len>1) {
stringBuffer.append(len);
}
i=j+1;
}
System.out.println(stringBuffer);
}
}
}