shatarupa.majumdar
BAN USERpublic class WaterStore {
public static void main(String[] args){
int[]arr = {8 , 7 , 6 , 5, 1, 1, 2};
int water = 0;
int i = 0;
while(i<arr.length-1){
int k=i+1;
if(arr[i]> arr[k] && k < arr.length-1 ){
while( !(arr[i]<=arr[k]) && k < arr.length-1 ){
k++;
};
if( arr[i]<=arr[k]){
// System.out.println(" k "+ k + " i " + i);
int j = i;
while(j<k-1){
// System.out.println(" arr[j] "+ arr[j] + " arr[j+1] " + arr[j+1]);
water = water + (((arr[i]-arr[j+1]) >=0 ? (arr[i]-arr[j+1]) :0 ));
// System.out.println(" water " + water);
j++;
}
}
}
i=k;
}
System.out.println( water);
}
}
public static String latestVersion(String str1,String str2)
{
StringBuffer s1 = new StringBuffer(str1.replace("." , ""));
StringBuffer s2 = new StringBuffer( str2.replace(".", ""));
if( s1.length()>s2.length()){
s2 = rightPad(s2,s1.length(),'0' );
}else{
s1 = rightPad(s1,s2.length(),'0' );
}
// System.out.println( "s1 " + s1.toString() + "s2 " + s2.toString());
return(Integer.parseInt(s1.toString())>Integer.parseInt(s2.toString())?str1 :str2);
}
public static StringBuffer rightPad(StringBuffer smallStr, int newLength, char paddingChar){
for(int i = smallStr.length();i < newLength; i++){
smallStr.append(paddingChar);
}
return smallStr;
}
Thanks for pointing that out. Missed the use case. I have added a right pad function that makes the numbers of equal length. This function can also be found as a part of org.apache.common.lan.StringUtils. My version ofcourse is my own implementation and uses Stringbuffers.
- shatarupa.majumdar January 21, 2014Th basic idea is to leverage the fact that the numerical values of version string denote higher numbers that their predecessor.