Advertisement
dimipan80

C#Exams 4. Longest Alphabetical Word (on Java Code)

Aug 24th, 2014
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.51 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Scanner;
  3.  
  4. public class _4_LongestAlphabeticalWord {
  5.  
  6.     public static void main(String[] args) {
  7.         // TODO Auto-generated method stub
  8.         Scanner scan = new Scanner(System.in);
  9.         String word = scan.next();
  10.         int size = scan.nextInt();
  11.  
  12.         String longestWord = "" + word.charAt(0);
  13.         if (word.length() > 1 && size > 1) {
  14.             char[][] matrix = createMatrixOfWordLetters(word, size);
  15.             ArrayList<String> wordsList = new ArrayList<String>();
  16.             for (int row = 0; row < matrix[0].length; row++) {
  17.                 for (int col = 0; col < matrix[1].length; col++) {
  18.                     String rightWord = findNextAlpabeticalWord(matrix, row,
  19.                             col, 0, 1);
  20.                     wordsList.add(rightWord);
  21.                     String downWord = findNextAlpabeticalWord(matrix, row, col,
  22.                             1, 0);
  23.                     wordsList.add(downWord);
  24.                     String leftWord = findNextAlpabeticalWord(matrix, row, col,
  25.                             0, -1);
  26.                     wordsList.add(leftWord);
  27.                     String upperWord = findNextAlpabeticalWord(matrix, row,
  28.                             col, -1, 0);
  29.                     wordsList.add(upperWord);
  30.                 }
  31.             }
  32.  
  33.             longestWord = findTheLongestAlphabeticalWordInArrayList(wordsList);
  34.         }
  35.  
  36.         System.out.println(longestWord);
  37.     }
  38.  
  39.     private static char[][] createMatrixOfWordLetters(String text, int length) {
  40.         char[][] matrix = new char[length][length];
  41.         int index = 0;
  42.         for (int row = 0; row < matrix[0].length; row++) {
  43.             for (int col = 0; col < matrix[1].length; col++) {
  44.                 matrix[row][col] = text.charAt(index % text.length());
  45.                 index++;
  46.             }
  47.         }
  48.  
  49.         return matrix;
  50.     }
  51.  
  52.     private static String findNextAlpabeticalWord(char[][] matrix, int row,
  53.             int col, int directY, int directX) {
  54.         // TODO Auto-generated method stub
  55.         int length = matrix[0].length;
  56.         StringBuilder sb = new StringBuilder();
  57.         char previous = matrix[row][col];
  58.         sb.append(previous);
  59.         while (true) {
  60.             row += directY;
  61.             col += directX;
  62.             boolean isOutsideOfMatrix = row < 0 || row >= length || col < 0
  63.                     || col >= length;
  64.             if (isOutsideOfMatrix || (matrix[row][col] <= previous)) {
  65.                 break;
  66.             }
  67.  
  68.             sb.append(matrix[row][col]);
  69.             previous = matrix[row][col];
  70.         }
  71.  
  72.         return sb.toString();
  73.     }
  74.  
  75.     private static String findTheLongestAlphabeticalWordInArrayList(
  76.             ArrayList<String> wordsList) {
  77.         wordsList.sort(null);
  78.         String maxLettersStr = "";
  79.         int maxCountLetters = 0;
  80.         for (String wordStr : wordsList) {
  81.             if (wordStr.length() > maxCountLetters) {
  82.                 maxCountLetters = wordStr.length();
  83.                 maxLettersStr = wordStr;
  84.             }
  85.         }
  86.  
  87.         return maxLettersStr;
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement