所用编程语言:JAVA
基础知识:字符串输入,字符串分割,转型,字符串连接,循环。
基本思路:
1.输入字符串并分割存入数组;
2.通过循环判断前后字符是否相同,并利用变量k计相同字符数;
3.最后一位字符另外写明,否则超过长度范围;
4.最后判断是否长度缩减,是则输出新的字符串,否则输出NO。
import java.util.Objects;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String []str1=sc.next().split("");
StringBuilder str2= new StringBuilder();//存新字符。
int k=1;
for (int i = 0; i < str1.length; i++) {
if(i<str1.length-1) {
if (Objects.equals(str1[i], str1[i + 1])) {
k += 1;
}
if (!Objects.equals(str1[i], str1[i + 1])) {
if (k == 1) {//若字符只出现一次则只输出该字符而不带数字。
str2.append(str1[i]);
} else if (k > 1) {//字符出现>1则输出字符+出现次数。
str2.append(str1[i]).append(k);
k = 1;
}
}
}if(i==str1.length-1){//最后一个字符单独测试。
if(!Objects.equals(str1[i], str1[i - 1])){
str2.append(str1[i]);
}if(Objects.equals(str1[i], str1[i - 1])){
str2.append(str1[i]).append(k);
}
}
}
if(str1.length>str2.length()){//判断长度是否缩减。
System.out.println(str2);
}else{
System.out.println("NO");
}
}
}