1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

JAva Arrays

Discussão em 'Programação' iniciada por DarkT, 12 de Fevereiro de 2009. (Respostas: 1; Visualizações: 462)

  1. DarkT

    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
     
  2. IComeFromBehind

    IComeFromBehind Power Member

    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));
        }
    }
    
     

Partilhar esta Página