JAva Arrays

DarkT

Power Member
Bem o meu obejctivo era ter uma string como exemplo: AABBCCBBAAA

E guardava num array os valores assim: [2][A][2][2][C][3][A]

Código:
import java.util.Scanner; 
public class teste {
	
	public static void main(String args[])
	{
		int i=0;
		int j=1;
		int count=0;
		int x=0;
		Scanner in=new Scanner(System.in);
		System.out.println("FRASE");
		String frase= in.nextLine();
		String[] RLE= new String[2*frase.length()];
		RLE[j]=String.valueOf(frase.charAt(0));		
		for(i=0;i<frase.length()-1;i++)
		{
			while(RLE[j].equals(String.valueOf(frase.charAt(i))))
			{
				if(i>=frase.length()-1)
					break;
				count++;
				RLE[x]=String.valueOf(count);
				
				i++;		
			}
			count=0;
			x=x+2;
			j=j+2;
			RLE[j]=String.valueOf(frase.charAt(i));
			i--;
		}
		for(i=0;i<RLE.length;i++){
			if(RLE[i]!=null)
				System.out.print(RLE[i]);
			}
		}		
}

Não encontro o erro tipo da me assim:

com esta sequencia

AABBC

da isto 2A2BC

devia dar isto

2A2B1C
 
Código:
import java.util.*;

class Pair {
    char letter;
    int frequency;
    
    Pair(char letter, int frequency) {
        this.letter = letter;
        this.frequency = frequency;
    }
    
    public String toString() {
        return "[" + letter + ":" + frequency + "]";
    }
}

class Test {

    static List<Pair> compressString(String toCompress) {
        LinkedList<Pair> compressed = new LinkedList<Pair>();
        
        if(toCompress.length() == 0)
            return compressed;
        
        for(char letter : toCompress.toCharArray()) {
            if(compressed.isEmpty())
                compressed.add(new Pair(letter, 1));
            else if(compressed.getLast().letter == letter)
                compressed.getLast().frequency++;
            else
                compressed.add(new Pair(letter, 1));
        }
        return compressed;
    }
    
    public static void main (String [] args)
    {
        Scanner in = new Scanner(System.in);
        
        String phrase = in.nextLine();
        
        System.out.println(compressString(phrase));
    }
}
 
Back
Topo