Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.Scanner;
- import java.util.List;
- import java.util.ArrayList;
- import java.util.LinkedList;
- import java.util.Queue;
- class Solution {
- public static void main(String args[]) {
- final Scanner in = new Scanner(System.in);
- final int n = in.nextInt();
- String m;
- List<String> strArr = new ArrayList<String>();
- for (int i = 0; i < n; i++) {
- m = in.next();
- strArr.add(m.toLowerCase());
- }
- Queue<CharPosition> lstOfA = new LinkedList<CharPosition>();
- // Récupère tous la position i, j où un 'a' se situe
- for (int i = 0; i < strArr.size(); i++) {
- String tmp = strArr.get(i);
- for (int j = 0; j < tmp.length(); j++) {
- if (tmp.charAt(j) == 'a') {
- lstOfA.add(new CharPosition('a', i, j));
- }
- }
- }
- List<CharPosition> indexOfCorrectLetters = new ArrayList<CharPosition>();
- CharPosition cp, tmpCp;
- int i, j;
- char c;
- while (!lstOfA.isEmpty()) {
- cp = lstOfA.poll();
- i = cp.getI();
- j = cp.getJ();
- tmpCp = new CharPosition(cp.getCharacter(), i, j);
- indexOfCorrectLetters.add(tmpCp);
- c = '\0';
- for (c = (char) (cp.getCharacter() + 1); c <= 'z'; c++) {
- tmpCp = null;
- // en haut
- if (i > 0 && strArr.get(i-1).charAt(j) == c) {
- i--;
- tmpCp = new CharPosition(c, i, j);
- }
- // en bas
- else if (i < (n-1) && strArr.get(i+1).charAt(j) == c) {
- i++;
- tmpCp = new CharPosition(c, i, j);
- }
- // à gauche
- else if (j > 0 && strArr.get(i).charAt(j-1) == c) {
- j--;
- tmpCp = new CharPosition(c, i, j);
- }
- // à droite
- else if (j < (n-1) && strArr.get(i).charAt(j+1) == c) {
- j++;
- tmpCp = new CharPosition(c, i, j);
- }
- if (tmpCp != null) {
- indexOfCorrectLetters.add(tmpCp);
- } else {
- indexOfCorrectLetters.clear();
- break;
- }
- }
- if (indexOfCorrectLetters.size() > 0 && indexOfCorrectLetters.get(indexOfCorrectLetters.size() - 1).getCharacter() == 'z') {
- break;
- }
- }
- // Affichage
- for (i=0; i < n; i++) {
- for (j=0; j < n; j++) {
- c = '-';
- for (CharPosition cPos : indexOfCorrectLetters) {
- if (cPos.getI() == i && cPos.getJ() == j) {
- c = cPos.getCharacter();
- break;
- }
- }
- System.out.print(c);
- }
- System.out.println();
- }
- }
- private static class CharPosition {
- private char character;
- private int i;
- private int j;
- public CharPosition(char character, int i, int j) {
- this.character = character;
- this.i = i;
- this.j = j;
- }
- public char getCharacter() {
- return character;
- }
- public void setCharacter(char character) {
- this.character = character;
- }
- public int getI() {
- return i;
- }
- public void setI(int i) {
- this.i = i;
- }
- public int getJ() {
- return j;
- }
- public void setJ(int j) {
- this.j = j;
- }
- @Override
- public String toString() {
- return "CharPosition{" +
- "character=" + character +
- ", i=" + i +
- ", j=" + j +
- '}';
- }
- }
- }
- /**
- * Objectif :
- * Ce programme cherche à identifier la séquence consécutive de 'a' à 'z' dans l'ordre alphabétique dans une chaîne multiligne 'm' de 'n' lignes de longueur 'n'.
- * Vous pouvez vous déplacer vers le haut, la droite, la gauche ou le bas. Tout d'abord, vous trouvez 'a'.
- * Si 'b' est situé en haut, en bas, à gauche ou à droite de 'a', vous pouvez vous y déplacer. Si 'c' est situé de la même manière par rapport à 'b', vous pouvez vous y déplacer, et ainsi de suite jusqu'à 'z'.
- * Toutes les séquences de lettres non consécutives de 'a' à 'z' sont réécrites en '-'. En d'autres termes, ce problème consiste à afficher uniquement la séquence consécutive de 'a' à 'z' dans une chaîne multiligne 'm' de 'n' lignes de longueur 'n'.
- *
- * Entrée :
- * Ligne 1 : Un entier 'n' pour la taille de la figure en chaîne.
- * Les 'n' lignes suivantes : une chaîne multiligne 'm'.
- * Sortie :
- * Affichez uniquement les séquences alphabétiques de 'a' à 'z' dans la chaîne multiligne 'm', les autres parties devant être remplacées par '-'.
- * Contraintes :
- * 10 <= n <= 30
- * 'm' se compose uniquement de caractères alphabétiques minuscules.
- * Il peut y avoir plus d'un 'a'.
- * Il n'y a qu'une seule séquence 'abcdefghijklmnopqrstuvwxyz' dans la figure en chaîne.
- *
- * La sortie est la suivante :
- *
- * Exemple :
- *
- * 10
- * vkbjbzmbgb
- * abcccpzouv
- * fedopwlmcl
- * glmnqrszyw
- * hkrhiutymj
- * ijqcmvwxoc
- * pcvlpqzphl
- * hsgvoklcxy
- * urdjusmbmz
- * rchbcausnp
- *
- * La réponse à cela est...
- *
- * ----------
- * abc-------
- * fedop-----
- * glmnqrsz--
- * hk---uty--
- * ij---vwx--
- * ----------
- * ----------
- * ----------
- * ----------
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement