hrshchaitanya
BAN USER{
// Time - O(n^2), Space - O(n^2)
static String findLongestRepeatedSubString(String s) {
if(s==null || s.trim().length()==0)
return "";
int len = s.length();
int[][] matrix = new int[len][len];
int maxLen = 0;
int maxIndex = 0;
for(int i=0; i< len; i++) {
for(int j=i+1; j < len; j++) {
if(s.charAt(i)==s.charAt(j)) {
matrix[i][j] = ((i-1<0 || j-1<0)?0:matrix[i-1][j-1]) +1;
if(matrix[i][j]>maxLen) {
maxLen = matrix[i][j];
maxIndex = j;
}
}
}
}
return s.substring(maxIndex-maxLen+1,maxIndex+1);
}
}
Above codes time Complexity is n^3. We can do this n^2 using dynamic programming.
- hrshchaitanya April 28, 2017static int split(String s) {
int i = -1;
int j = s.length();
int count = 0;
while(i+1<j) {
if(s.charAt(i+1)=='(' && s.charAt(j-1)==')') {
i++;
j--;
count++;
continue;
}
if(s.charAt(i+1)==')') {
i++;
}
if(s.charAt(j-1)=='(') {
j--;
}
}
if(count>0)
return j;
else
return s.length()-count;
}
- hrshchaitanya April 27, 2017static int split(String s) {
int i = -1;
int j = s.length();
int count = 0;
while(i+1<j) {
if(s.charAt(i+1)=='(' && s.charAt(j-1)==')') {
i++;
j--;
count++;
continue;
}
if(s.charAt(i+1)==')') {
i++;
}
if(s.charAt(j-1)=='(') {
j--;
}
}
if(count>0)
return j;
else
return s.length()-count;
}
static int split(String s) {
int i = -1;
int j = s.length();
int count = 0;
while(i+1<j) {
if(s.charAt(i+1)=='(' && s.charAt(j-1)==')') {
i++;
j--;
count++;
continue;
}
if(s.charAt(i+1)==')') {
i++;
}
if(s.charAt(j-1)=='(') {
j--;
}
}
if(count>0)
return j;
else
return s.length()-count;
}
{ static void whatTypeOfArray(int[] arr) {
- hrshchaitanya May 01, 2017if(arr.length<=1) {
System.out.println("Ascending");
return;
}
int len = arr.length;
int start = 0;
int end = len-1;
while(start<len-1 && arr[start]==arr[start+1])
start++;
if(start==len-1) {
System.out.println("All same numbers");
return;
}
while(end>0 && arr[end]==arr[end-1])
end--;
if(arr[start]>arr[end]) {
if(start+1==end || (arr[start]>arr[start+1] && arr[end-1]>arr[end])) {
System.out.println("Decending");
} else
System.out.println("Ascending Sorted");
} else {
if(start+1==end || (arr[start]<arr[start+1] && arr[end-1]<arr[end])) {
System.out.println("Ascending");
} else
System.out.println("Decending Sorted");
}
}
}