fork download
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5. public class Main {
  6. static final int LAST_LETTER = 'z';
  7.  
  8. static boolean isLetter(char c) {
  9. return ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z');
  10. }
  11.  
  12. static boolean hasDistinctLetters(String text) {
  13. int[] fr = new int[LAST_LETTER + 1];
  14. int length = text.length();
  15. for (int i = 0; i < length; ++i) {
  16. ++fr[text.charAt(i)];
  17. if (fr[text.charAt(i)] > 1) {
  18. return false;
  19. }
  20. }
  21. return true;
  22. }
  23.  
  24. static boolean moreAbsurd(String firstText, String secondText) {
  25. int firstLen = firstText.length(), secondLen = secondText.length();
  26. return hasDistinctLetters(firstText) && (firstLen > secondLen || (firstLen == secondLen && firstText.compareTo(secondText) < 0));
  27. }
  28.  
  29. static void distinctLettersLargestWord(String text, StringBuilder absurdWord) {
  30. int length = text.length();
  31. StringBuilder currentWord = new StringBuilder();
  32. boolean wasLetter = false;
  33. for (int i = 0; i < length; ++i) {
  34. if (isLetter(text.charAt(i))) {
  35. currentWord.append(text.charAt(i));
  36. wasLetter = true;
  37. } else if (wasLetter) {
  38. if (moreAbsurd(currentWord.toString(), absurdWord.toString())) {
  39. absurdWord.setLength(0);
  40. absurdWord.append(currentWord);
  41. }
  42. currentWord = new StringBuilder();
  43. wasLetter = false;
  44. }
  45. }
  46. if (wasLetter && moreAbsurd(currentWord.toString(), absurdWord.toString())) {
  47. absurdWord.setLength(0);
  48. absurdWord.append(currentWord);
  49. }
  50. }
  51.  
  52. public static void main(String[] args) throws IOException {
  53. String text;
  54. StringBuilder absurdWord = new StringBuilder();
  55. while (reader.ready()) {
  56. text = reader.readLine();
  57. distinctLettersLargestWord(text, absurdWord);
  58. }
  59. if (absurdWord.length() != 0) {
  60. System.out.println(absurdWord);
  61. } else {
  62. System.out.println("Ist nicht vorhanden!");
  63. }
  64. }
  65. }
Success #stdin #stdout 0.12s 55052KB
stdin
Aabcadefg…abcd
!xyzd!!! xyxzd
stdout
abcd