Witam,
Sprawdzałem wiele różnych kombinacji danych wejściowych i u mnie jest wszystko ok. Zarówno przyjmowanie ilości testów, jak i podawanie danych i wyświetlanie wyników. Przewidziany limit czasowy to: 0.219s., a na spoju błąd wyskakuje z czasem 0.14s., czyli się mieszczę. SPOJ wyświetla mi jednak: Błędna odpowiedź.
import java.util.*;
import java.lang.*;
import java.util.Scanner;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
int liczbaTestow;
int licznikLiter;
String tekst, tekstSkrocony, licznikLiterString;
Scanner scan = new Scanner(System.in);
liczbaTestow = scan.nextInt();
for(byte i = 1; i <= liczbaTestow; i++){
tekst = scan.nextLine();
tekstSkrocony = "";
licznikLiter = 1;
char zn = 0;
for(int j = 0; j < tekst.length(); j++){
if(zn == tekst.charAt(j)){
licznikLiter++;
}
else if(zn != tekst.charAt(j)){
if(licznikLiter == 1){
tekstSkrocony = tekstSkrocony + zn;
}
else if(licznikLiter == 2){
tekstSkrocony = tekstSkrocony + zn + zn;
}
else if(licznikLiter > 2){
licznikLiterString = Integer.toString(licznikLiter);
tekstSkrocony = tekstSkrocony + zn + licznikLiterString;
}
licznikLiter = 1;
}
zn = tekst.charAt(j);
}
if(licznikLiter == 1) tekstSkrocony = tekstSkrocony + zn;
else if(licznikLiter == 2) tekstSkrocony = tekstSkrocony + zn + zn;
else if(licznikLiter > 2){
licznikLiterString = Integer.toString(licznikLiter);
tekstSkrocony = tekstSkrocony + zn + licznikLiterString;
}
System.out.println(tekstSkrocony);
}
}
}