Jump to content
ppshaman

Ordenação de Strings (Ordem inversa)

Recommended Posts

ppshaman

Boa tarde. Tenho que resolver um problema e estou com grandes dificuldades para resolver.

Crie uma função que receba duas strings (por exemplo):
- "abcde"
- "12345"

Quero que o resultado da função seja:
- "e5d4c3b2a1"

Atenção que as duas string podem não ter o mesmo número de caracteres:
- exemplo1: "abc" e "1234567"
- exemplo2: "abcde" e "123"
- exemplo3: "" e "" (as duas strings vazias)

 

O que fiz foi isto e não está a resultar:

package Exemplos;

public class OrderStrings {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String texto1 = "java";
        String texto2 = "python";

        for (int i = texto1.length()-1; i >= 0; i--) {
            System.out.print(texto1.charAt(i));
            for (int j = texto2.length()-1 ; j >= 0 ; j--) {
                System.out.print(texto2.charAt(j));
            }
        }
    }
}

O resultado é este - anohtypvnohtypanohtypjnohtyp

Não estou a conseguir resolver. Se me poderem ajudar agradeço muito.

 

Obrigado

Share this post


Link to post
Share on other sites
HappyHippyHippo

se eu der a dica que é feito só com um único ciclo, achas que chagas lá ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
ppshaman

 for (int i = texto1.length()-1; i >= 0; i--) {
            System.out.print(texto1.charAt(i) +""+ texto2.charAt(i));
            
        }

Criei uma variavel soma para somar os caracteres das duas strings. Iniciava o ciclo com a soma dessa variavel. MAs tb não funcionou

 

Não funciona :(

Edited by ppshaman

Share this post


Link to post
Share on other sites
HappyHippyHippo

vamos ver assim :

- se tiver que apresentar mais caracteres então
  - se tiver que apresentar um caracter da primeira palavra
     - apresento
  - se tiver que apresentar um caracter da segunda palavra
     - apresento

agora faz as perguntas cruciais a tí próprio (se tiver ...)

 

chegas lá assim ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
ppshaman

Eu estou a começar agora a estudar Java e falta-me muita logica :( Tenho este exercicio para apresentar amnhã. Vou tentar ver se consigo solucionar com as tuas dicas. Obrigado

 

Share this post


Link to post
Share on other sites
ppshaman
    String texto1 = "java";
        String texto2 = "python";

        int soma = texto1.length() + texto2.length();

        for (int i = soma; i >= 0; i--) {

            if(texto1.charAt(i) != 0) {
                System.out.print(texto1.charAt(i));
            }else if(texto2.charAt(i) != 0) {
                System.out.print(texto2.charAt(i));
            }else {
                System.out.print(texto1.charAt(i));
            }
                        
        }

Algo deste genero? Estou a ter problemas a fechar o bloco e não estou a conseguir resolver. Que cena do mal

 

Share this post


Link to post
Share on other sites
HappyHippyHippo

uma primeira nota - no processo que descrevi consegues deslindrar a palavra senão ?

agora, sei que parece que tens pouco tempo, e isto parece impossivel, e deves andas às aranhas, mas escrever algo sem lhe dar um sentido, é bem pior do que não fazer. isto porque, ao escreveres algo, estás a recalcar a ideia que o que estás a fazer está correcto e começas a criar a ideia de que isto é impossivel ao dar errado. isto para não falar em problemas relacionados com o investimento no código realizado, algo que torna a aceitação de que este está errado muito mais complicada (mais isso sou eu a divagar ...)

vamos ao primeiro passo/pergunta:

- se tiver que apresentar mais caracteres

pelo teu código, isto foi avaliado como um ciclo de tamanho(A) + tamanho(B), sendo A e B as palavras do problema. isto não faz muito sentido porque a soma dá impreterivelmente um valor maior do que a maior palavra das duas, logo a obteção do índice dessa letra não faz qualquer sentido.

olha bem para o exemplo inicial e a sua solução : e5d4c3b2a1

o que é e5 ? o que é d4 ? ... etc, etc ...


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
ppshaman

Sim estou mesmo as aranhas :( Se não tenho ideia como fazer com dois for, então com 1, uiui. 

Eucom este codigo consigo o resultado, mas chega ao final dos elementos de texto1 e pára não completando de preencher o resto.

    for (int i = texto1.length()-1; i >= 0; i--) {
            System.out.print(texto1.charAt(i));            
                System.out.print(texto2.charAt(i));
               }

Resultado - ahvtayJP

 

O meu problema e que não sei como controlar a variavel de inicialização do for. Supostamente deveria ser com a String com mais caracteres, mas se mudar ela estoira. Já experimentei com isto mas tb não ajuda. Esta logica é que me trama :(

 

    String texto1 = "Java";
        String texto2 = "Python";
        int control ;


        if (texto1.length() > texto2.length()) {
            control = texto1.length();                
        }else {
            control = texto2.length();;
        }


        for (int i = control; i >= 0; i--) {
            if(texto1.charAt(i) != 0) {
                System.out.print(texto1.charAt(i));
            }else {
                System.out.print(texto2.charAt(i));
            }
        }

    }

            
 

Share this post


Link to post
Share on other sites
Tim§id€

Boas, eu tentei criar o exercício e consegui, esta praticamente igual ao teu, a unica coisa que muda é o if, tenho dois if em vez de ter if e else. Por isso pensa assim se o tamanho da frase1-1 for maior ou igual que i ele tem que mostrar. 
Ps: fiz com Java e Python e o output foi este noahvtayJP diferente do teu que foi ahvtayJP, agora se o meu output é o que tu queres ou não, não sei. Também testei com abcde e 12345 e o output foi e5d4c3b2a1. 

Edited by Tim§id€

...º(>_<)º...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.