2017-10-02 8 views
-3

Je suis novice en programmation et java. J'apprends toujours Java. Je résolvait une crypte (en java) qui m'a été fournie avec les contraintes suivantes:Comment décoder la crypte suivante

Entrée: WRIEN

Sortie: erwin

Comment la crypte est codée: Retirez le La lettre médiane du mot forme le mot original et l'ajoute à la fin du mot jusqu'à ce qu'il ne reste aucune lettre. Il y a une autre condition si la longueur du mot est pair, alors la lettre gauche de la médiane est choisie.

Dans le cas ci-dessus « w » est la médiane de la chaîne il est ajouté au début et ainsi de suite.

j'ai réussi à encoder la chaîne dire converti erwin à WRIEN mais je ne suis pas capable de le décoder. J'ai essayé plusieurs façons, mais ils sont allés dans la veine. Voici ce que j'ai essayé: [ÉDITÉE SELON @ La réponse de Talex]

String temp = ""; 
    int i = 0; 
    if(text.length() % 2 != 0){ 
    while(i < text.length()){ 
     if((i + 1) % 2 == 0) 
      temp = text.charAt(i) + temp; 
     else 
      temp = temp + text.charAt(i); 

     i++; 
    } 
    System.out.println(temp); 
    } 
    else{//Here it is failing } 

S'il vous plaît aidez-moi à comprendre pour décoder la crypte (je suis un débutant dans la programmation si des excuses si la question ne sont pas conformes aux normes mais je suis totalement bloqué sur le problème).

Merci

+1

1) D'abord, vous dites: "Retirez la lettre médiane [...] et l'ajouter à la fin". Mais alors vous dites aussi: "w" est la médiane [...] donc c'est ajouté au début ". Alors, quelle est la condition exacte? 2) Vous ne nous avez montré aucun code accompagné d'une explication où exactement dans votre code vous êtes coincé. À ce stade, votre question est à la fois floue et trop large. – Seelenvirtuose

+0

Qu'avez-vous essayé exactement (code)? Nous pouvons peut-être signaler vos erreurs. – arminb

+0

@Seenlenvirtuose c'est ce que j'ai été fourni avec et j'ai dû écrire le code pour encoder et décoder. J'ai été en mesure d'encoder la chaîne, mais pas capable de le décoder. J'ai donc mentionné les deux façons. Et j'ai mentionné que je veux juste savoir la logique pour le décoder – NiruADV

Répondre

4

Get variable temp et l'initialiser avec une chaîne vide.

Pour chaque lettre:

  • même lettre à la chaîne de précédez température.
  • lettre étrange ajouter à la chaîne de temp.

extrait de code:

String tmp = ""; 
bool flag = true; 
for(char c : input.toCharArray()) { 
    if(flag) { 
     tmp = c + tmp; 
    } else { 
     tmp = tmp + c; 
    } 
    flag = !flag; 
} 
+0

Merci @talex. Juste une question comment ** préfixer ** la chaîne temporaire comme vous l'avez mentionné dans Java. Je suis toujours un débutant dans Java si désolé pour cela – NiruADV

+2

Prepend: temp = x + temp; Ajouter: temp = temp + x; – arminb

+0

Merci! arminb Je vais essayer cette solution – NiruADV