Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.math.BigDecimal;
  4. import java.math.BigInteger;
  5. import java.util.*;
  6.  
  7. public class Main
  8. {
  9. static List<Character> lol = Arrays.asList('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v', 'w', 'x', 'y', 'z');
  10.  
  11.  
  12. public static void main(String[] args)
  13. {
  14. // write your code here
  15. Scanner sc = new Scanner(System.in);
  16.  
  17. String word = sc.nextLine();
  18.  
  19. // выделить подслова.
  20. if (isPolindrome(new StringBuilder(word)))
  21. System.out.println(0);
  22. else
  23. {
  24. Set<String> subwords = cutSubwordsFrom(word);
  25.  
  26. int min = Integer.MAX_VALUE;
  27.  
  28. for (String subword : subwords)
  29. {
  30. if (isAlmostPoli(subword))
  31. if (min > (word.length() - subword.length()))
  32.  
  33. min = word.length() - subword.length();
  34. }
  35.  
  36. System.out.println(min);
  37. }
  38. }
  39.  
  40. private static boolean isPolindrome(StringBuilder word)
  41. {
  42. String start = word.toString();
  43. String reversed = word.reverse().toString();
  44.  
  45. return reversed.equals(start);
  46. }
  47.  
  48. private static Set<String> cutSubwordsFrom(String word)
  49. {
  50. StringBuilder builder = new StringBuilder(word);
  51.  
  52. Set<String> subwords = new HashSet<>();
  53.  
  54. for (int i = 0; i < word.length(); i++)
  55. {
  56. for (int j = i+1; j <= word.length(); j++)
  57. {
  58. char[] sub = new char[j - i];
  59. builder.getChars(i, j, sub, 0);
  60. subwords.add(new String(sub));
  61. }
  62. }
  63.  
  64. return subwords;
  65. }
  66.  
  67. private static boolean isAlmostPoli(String word)
  68. {
  69.  
  70. for (int i = 0; i < word.length(); i++)
  71. {
  72. StringBuilder builder = new StringBuilder(word);
  73. builder = builder.deleteCharAt(i);
  74.  
  75. if (isPolindrome(builder))
  76. return true;
  77. }
  78.  
  79. for (Character lel : lol)
  80. {
  81. for (int i = 0; i < word.length(); i++)
  82. {
  83. StringBuilder builder = new StringBuilder(word);
  84. builder.setCharAt(i, lel);
  85.  
  86. if (isPolindrome(builder))
  87. return true;
  88. }
  89.  
  90. }
  91.  
  92. return false;
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement