Descripción del título: Compresión de cadenas:
- Comprima los caracteres consecutivos en la cadena original de acuerdo con el número de ocurrencias.
- Entrada: AACBBBDDDDFFX
- Salida: A2C1B3D5F2X1
Ideas:
1. Obtener entrada:
use la clase Scanner para crear un objeto de entrada (preste atención al paquete, es decir, la primera línea del programa a continuación), obtenga la cadena que se comprimirá y defina un contador numérico e inicialícelo en 1 , que se utiliza para registrar el número actual de caracteres, porque el carácter actual aparece al menos una vez.
2. Compresión
Utilice el bucle for para obtener el carácter actual y el carácter siguiente ( charAt () ), y luego juzgue si los dos son iguales. Si son iguales, el contador se acumula. Si no son iguales, se emite el carácter actual y el número de ocurrencias (nota: con Salida en forma de cadena, y use ( System.out.print () ). En este momento, el número se restablece a 1.
Pero en este momento, hay un Cuando el bucle llega al último carácter, el siguiente carácter no se puede obtener y aparece una excepción Subíndice fuera de límites ( ArrayIndexOutOfBoundsException ), por lo que antes de obtener el siguiente carácter, primero debemos determinar si el carácter es el último carácter, si es el último carácter, emite el carácter y el valor del contador.
import java.util.Scanner;
public class Test0 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
String arr=input.next();
int number=1;
//遍历每个字符
for(int i=0;i<arr.length();i++){
//获取当前字符
char c=arr.charAt(i);
//判断是否为最后一个字符
if(i==arr.length()-1){
System.out.println(c + "" + number);
break;
}
//获取下一个字符
char next=arr.charAt(i+1);
if(c==next){
number++;//次数累加
}else{
//输出
System.out.print(c+"" + number);
//出现次数重置为1
number=1;
}
}
}
}