Novice
BAN USERJava solution:
private static StringBuilder sb = new StringBuilder();
public void genPattern(String str, int index){
if(index == str.length()){
System.out.println(sb.toString());
}
else if(str.charAt(index) == '?'){
for(int i = 0; i < 2; i++){
sb.append((char)(48+i));
genPattern(str, index + 1);
sb.deleteCharAt(sb.length() - 1);
}
}
else{
sb.append(str.charAt(index));
genPattern(str, index + 1);
sb.deleteCharAt(sb.length() - 1);
}
}
This code find the max sum with the locations:
public void maxSubSeq(int[] data){
int s = 0, a = 0, b = 0, sum = 0, maxSum = 0;
for(int i = 0; i < data.length; i++){
sum = sum + data[i];
if(sum < 0){
sum = 0;
s = i + 1;
}
else if(sum > maxSum){
maxSum = sum;
a = s;
b = i;
}
}
System.out.println("Max sum is: " + maxSum + " from location " + a + " to " + b);
}
I did in Java, but the technique is very similar. Java code is:
public char[] moveSpaceFront(String data){
int count = 0;
char[] str = data.toCharArray();
int i = str.length - 1;
while(i >= 0){
if(str[i] == ' ')
count++;
else
str[i + count] = str[i];
i--;
}
for(i = 0; i < count; i++)
str[i] = ' ';
return str;
}
public int searchMin(int[] array, int s, int f){
if(s == f)
return array[s];
else if(s - f == 1)
return (array[s] < array[f]? array[s]: array[f]);
else{
int mid = (f - s)/2 + s;
if(array[mid] < array[mid - 1])
return array[mid];
else if(array[mid] < array[s])
return searchMin(array, s, mid - 1);
else if(array[f] < array[mid])
return searchMin(array, mid + 1, f);
else
return array[s];
}
}
Java solution using static variable and in order traversal
- Novice August 13, 2013