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);
}
static String calculateScore(String text, String prefix, String suffix) {
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);
max_pre = pre;
}
else if(max == pre
+ post
){ if(pre > max_pre) {
max_pre = pre;
}
else{
String
[] arr
= {result
,subStr}; max_pre = pre;
}
}
}
}
}
return result;
}
private static int findPostLength
(String
subStr, String suffix
) { 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
()) }
}
private static int findPreLength
(String
subStr, String prefix
) { 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) }
}
}
aW1wb3J0IGphdmEudXRpbC5BcnJheXM7CmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKCgogY2xhc3MgSGFja2VyUmFuazEgewoKCgoKICAgIC8vcHVibGljIHN0YXRpYyBTdHJpbmcgdGV4dCA9ICJub3RoaW5nIjsKICAgLy8gcHVibGljIHN0YXRpYyBTdHJpbmcgcHJlZml4ID0gImJydW5vIjsKICAgLy8gcHVibGljIHN0YXRpYyBTdHJpbmcgc3VmZml4ID0gImluZ2VuaW91cyI7CiAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRleHQgPSAic3VkYXJzaGFuIjsKICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHByZWZpeCA9ICJjYmdzdWRhIjsKICAgcHVibGljIHN0YXRpYyBTdHJpbmcgc3VmZml4ID0gInNoYW5qayI7CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIFN0cmluZyByZXN1bHQgPSBjYWxjdWxhdGVTY29yZSh0ZXh0LCBwcmVmaXgsIHN1ZmZpeCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdCk7CiAgICB9CgogICAgc3RhdGljIFN0cmluZyBjYWxjdWxhdGVTY29yZShTdHJpbmcgdGV4dCwgU3RyaW5nIHByZWZpeCwgU3RyaW5nIHN1ZmZpeCkgewogICAgICAgIGludCBtYXggPSAwOwogICAgICAgIGludCBtYXhfcHJlICA9IDA7CiAgICAgICAgU3RyaW5nIHJlc3VsdCA9ICIiOwoKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRleHQubGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICBmb3IgKGludCBqID0gaSArIDE7IGogPD0gdGV4dC5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICBTdHJpbmcgc3ViU3RyID0gdGV4dC5zdWJzdHJpbmcoaSwgaik7CiAgICAgICAgICAgICAgICBpbnQgcHJlID0gZmluZFByZUxlbmd0aChzdWJTdHIsIHByZWZpeCk7Ci8vICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicHJlID0gIiArIHByZSk7CiAgICAgICAgICAgICAgICBpbnQgcG9zdCA9IGZpbmRQb3N0TGVuZ3RoKHN1YlN0ciwgc3VmZml4KTsKLy8gICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwb3N0ID0gIiArIHBvc3QpOwoKICAgICAgICAgICAgICAgIGlmKG1heCA8IChwcmUgKyBwb3N0KSkgewogICAgICAgICAgICAgICAgICAgIG1heCA9IHByZSArIHBvc3Q7CiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3ViU3RyOwogICAgICAgICAgICAgICAgICAgIG1heF9wcmUgPSBwcmU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmKG1heCA9PSBwcmUgKyBwb3N0KXsKICAgICAgICAgICAgICAgICAgICBpZihwcmUgPiBtYXhfcHJlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heF9wcmUgPSBwcmU7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YlN0cjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gYXJyID0ge3Jlc3VsdCxzdWJTdHJ9OwogICAgICAgICAgICAgICAgICAgICAgICBBcnJheXMuc29ydChhcnIpOwogICAgICAgICAgICAgICAgICAgICAgICBpZihhcnJbMF0uZXF1YWxzKHN1YlN0cikpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc3ViU3RyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4X3ByZSA9IHByZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXN1bHQ7CiAgICB9CgoKICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5kUG9zdExlbmd0aChTdHJpbmcgc3ViU3RyLCBTdHJpbmcgc3VmZml4KSB7CiAgICAgICAgaW50IG1heCA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdWJTdHIubGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICBpbnQgbGVuID0gMDsKICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN1YlN0ci5zdWJzdHJpbmcoaSk7CiAgICAgICAgICAgIGludCBrID0wOwogICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8c3VmZml4Lmxlbmd0aCgpICYmIGsgPCBzdHIubGVuZ3RoKCk7IGorKywgaysrKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RyLmNoYXJBdChrKSA9PSBzdWZmaXguY2hhckF0KGopKQogICAgICAgICAgICAgICAgICAgIGxlbisrOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChsZW4gPiBtYXggJiYgayA9PSBzdHIubGVuZ3RoKCkpCiAgICAgICAgICAgICAgICBtYXggPSBsZW47CiAgICAgICAgfQogICAgICAgIHJldHVybiBtYXg7CiAgICB9CgoKICAgIHByaXZhdGUgc3RhdGljIGludCBmaW5kUHJlTGVuZ3RoKFN0cmluZyBzdWJTdHIsIFN0cmluZyBwcmVmaXgpIHsKICAgICAgICBpbnQgbWF4ID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHN1YlN0ci5sZW5ndGgoKSArIDE7IGkrKykgewogICAgICAgICAgICBpbnQgbGVuID0gMDsKICAgICAgICAgICAgaW50IGogPSBwcmVmaXgubGVuZ3RoKCkgLSAxOwogICAgICAgICAgICBTdHJpbmcgc3RyID0gc3ViU3RyLnN1YnN0cmluZygwLCBpKTsKICAgICAgICAgICAgaW50IGsgPXN0ci5sZW5ndGgoKSAtIDE7CgogICAgICAgICAgICBmb3IgKDsgaiA+PSAwICYmIGsgPj0wOyBqLS0sIGstLSkgewogICAgICAgICAgICAgICAgaWYgKHN0ci5jaGFyQXQoaykgPT0gcHJlZml4LmNoYXJBdChqKSkKICAgICAgICAgICAgICAgICAgICBsZW4rKzsKICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAobGVuID4gbWF4ICYmIGsgPT0gLTEpCiAgICAgICAgICAgICAgICBtYXggPSBsZW47CiAgICAgICAgfQogICAgICAgIHJldHVybiBtYXg7CiAgICB9Cn0=
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;
}
}