[JAVA] Puzzle à cordes

Exercices de la tête

Lorsque vous entrez une chaîne de caractères arbitraire dans la console

YamadaTaro //input
a        r
m        a
a        T
d        a
a        d
T        a
a        m
r        a
oraTadamaY

Écrivez le code affiché comme ci-dessus.

Le ** "oraTadamaY" ** sur la dernière ligne semble avoir été une méthode inverse qui renvoie les chaînes dans l'ordre inverse dans la classe String ou la classe StringBuilder (rappelez-vous). Vous pouvez utiliser ceci.

Eh bien, la partie centrale restante. Cela signifie que des espaces (longueur de chaîne-2) seront insérés entre les caractères. Cela signifie que les caractères extraits par charAt () doivent être concaténés aux deux extrémités du groupe de chaînes de caractères vide qui a été combiné à plusieurs reprises avec l'instruction for (longueur de chaîne de caractères-2) fois.

main.java


import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		String a = s.nextLine();

		StringBuilder sb = new StringBuilder(a);
		StringBuilder blank = new StringBuilder();

		int len = a.length();
		for (int i = 0; i < len - 2; i++) {
			blank.append(" ");
		}
		for (int j = 1; j < len - 1; j++) {
			System.out.println(a.charAt(j) + blank.toString() + a.charAt(len - j - 1));
		}
		System.out.println(sb.reverse());
    }
}

Je voulais vraiment gérer le Stinrg scanné tel quel, mais comme j'ai dû utiliser la méthode inverse, je convertis String en StringBuilder.

Je ne veux pas utiliser pour (;;) car les perspectives ne sont pas très bonnes. Je voudrais utiliser l'extension pour ou while plutôt que cela, mais comme il semble que les variables locales inutiles augmenteront, je vais utiliser for (;;).

Quand j'y pense maintenant, je sens que je peux aller avec un tableau de caractères (char []) et une instruction if. Dans ce cas, le nombre de lignes est susceptible d'être long.

			System.out.println(a.charAt(j) + blank.toString() + a.charAt(len - j - 1));
		}```
 Le cours de clôture de j est len-1, donc l'indice du caractère le plus à droite sur les lignes 2-9 est {(len-1) -j}. Je pense que ** len-1-j ** est plus facile à comprendre que ** (len --j --1)) ** ci-dessus.


Recommended Posts

Puzzle à cordes
Chaîne
Chaîne Java
Remplacement de la chaîne de caractères
Chaîne de menteur
java.lang Résumé 2 (chaîne)
Pratique du tampon de chaîne
[Java] Remplissage de la chaîne de caractères
Comparaison des chaînes MyBatis
Traitement des chaînes Java
Méthodes de classe de chaîne
Chaîne divisée (Java)