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.03s 25760KB
stdin
Standard input is empty
stdout
import java.util.Arrays;
import java.util.Scanner;


 class HackerRank1 {




    //public static String text = "nothing";
   // public static String prefix = "bruno";
   // public static String suffix = "ingenious";
   public static String text = "sudarshan";
    public static String prefix = "cbgsuda";
   public static String suffix = "shanjk";

    public static void main(String[] args) {
        String result = calculateScore(text, prefix, suffix);
        System.out.println(result);
    }

    static String calculateScore(String text, String prefix, String suffix) {
        int max = 0;
        int max_pre  = 0;
        String result = "";

        for (int i = 0; i < text.length(); i++) {
            for (int j = i + 1; j <= text.length(); j++) {
                String subStr = text.substring(i, j);
                int pre = findPreLength(subStr, prefix);
//                System.out.println("pre = " + pre);
                int post = findPostLength(subStr, suffix);
//                System.out.println("post = " + post);

                if(max < (pre + post)) {
                    max = pre + post;
                    result = subStr;
                    max_pre = pre;
                }
                else if(max == pre + post){
                    if(pre > max_pre) {
                        max_pre = pre;
                        result = subStr;
                    }
                    else{
                        String[] arr = {result,subStr};
                        Arrays.sort(arr);
                        if(arr[0].equals(subStr)){
                            result = subStr;
                            max_pre = pre;
                        }
                    }
                }


            }
        }
        return result;
    }


    private static int findPostLength(String subStr, String suffix) {
        int max = 0;
        for (int i = 0; i < subStr.length(); i++) {
            int len = 0;
            String str = subStr.substring(i);
            int k =0;
            for (int j = 0; j <suffix.length() && k < str.length(); j++, k++) {
                if (str.charAt(k) == suffix.charAt(j))
                    len++;
                else
                    break;
            }
            if (len > max && k == str.length())
                max = len;
        }
        return max;
    }


    private static int findPreLength(String subStr, String prefix) {
        int max = 0;
        for (int i = 1; i < subStr.length() + 1; i++) {
            int len = 0;
            int j = prefix.length() - 1;
            String str = subStr.substring(0, i);
            int k =str.length() - 1;

            for (; j >= 0 && k >=0; j--, k--) {
                if (str.charAt(k) == prefix.charAt(j))
                    len++;
                else
                    break;
            }
            if (len > max && k == -1)
                max = len;
        }
        return max;
    }
}