fork download
  1. import java.util.Arrays;
  2. import java.util.Scanner;
  3.  
  4.  
  5. class HackerRank1 {
  6.  
  7.  
  8.  
  9.  
  10. public static String text = "nothing";
  11. public static String prefix = "bruno";
  12. public static String suffix = "ingenious";
  13. // public static String text = "sudarshan";
  14. //public static String prefix = "cbgsuda";
  15. //public static String suffix = "shanjk";
  16.  
  17. public static void main(String[] args) {
  18. String result = calculateScore(text, prefix, suffix);
  19. System.out.println(result);
  20. }
  21.  
  22. static String calculateScore(String text, String prefix, String suffix) {
  23. int max = 0;
  24. int max_pre = 0;
  25. String result = "";
  26.  
  27. for (int i = 0; i < text.length(); i++) {
  28. for (int j = i + 1; j <= text.length(); j++) {
  29. String subStr = text.substring(i, j);
  30. int pre = findPreLength(subStr, prefix);
  31. // System.out.println("pre = " + pre);
  32. int post = findPostLength(subStr, suffix);
  33. // System.out.println("post = " + post);
  34.  
  35. if(max < (pre + post)) {
  36. max = pre + post;
  37. result = subStr;
  38. max_pre = pre;
  39. }
  40. else if(max == pre + post){
  41. if(pre > max_pre) {
  42. max_pre = pre;
  43. result = subStr;
  44. }
  45. else{
  46. String[] arr = {result,subStr};
  47. Arrays.sort(arr);
  48. if(arr[0].equals(subStr)){
  49. result = subStr;
  50. max_pre = pre;
  51. }
  52. }
  53. }
  54.  
  55.  
  56. }
  57. }
  58. return result;
  59. }
  60.  
  61.  
  62. private static int findPostLength(String subStr, String suffix) {
  63. int max = 0;
  64. for (int i = 0; i < subStr.length(); i++) {
  65. int len = 0;
  66. String str = subStr.substring(i);
  67. int k =0;
  68. for (int j = 0; j <suffix.length() && k < str.length(); j++, k++) {
  69. if (str.charAt(k) == suffix.charAt(j))
  70. len++;
  71. else
  72. break;
  73. }
  74. if (len > max && k == str.length())
  75. max = len;
  76. }
  77. return max;
  78. }
  79.  
  80.  
  81. private static int findPreLength(String subStr, String prefix) {
  82. int max = 0;
  83. for (int i = 1; i < subStr.length() + 1; i++) {
  84. int len = 0;
  85. int j = prefix.length() - 1;
  86. String str = subStr.substring(0, i);
  87. int k =str.length() - 1;
  88.  
  89. for (; j >= 0 && k >=0; j--, k--) {
  90. if (str.charAt(k) == prefix.charAt(j))
  91. len++;
  92. else
  93. break;
  94. }
  95. if (len > max && k == -1)
  96. max = len;
  97. }
  98. return max;
  99. }
  100. }
Success #stdin #stdout 0.09s 47116KB
stdin
Standard input is empty
stdout
nothing