Monday, December 19, 2016

Reverse words of a String

public class ReverseWordofString {
public static void main(String[] args) {
String str = "Google   is my   dream   company";
System.out.println(str);
char[] carr = str.toCharArray();
reverse(carr, 0, carr.length);
int start = 0, end = 0;
for (int i = start; i < carr.length; i++) {
if (carr[i] == ' ') {
end = i;
reverse(carr, start, end);
start = end + 1;
} else if (i == carr.length - 1) {
end = i + 1;
reverse(carr, start, end);
}
}
System.out.println(new String(carr));
}

private static void reverse(char[] arr, int start, int end) {
end = end - 1;
int len = start + (end - start) / 2;
for (int k = start; k <= len; k++, end--) {
char temp = arr[k];
arr[k] = arr[end];
arr[end] = temp;
}

}

}

public String reverseWords(String s) {      
        int low=0;
        int hi=s.length();
        char[] arr=s.toCharArray();
        reverse(arr,low,hi);  
        System.out.println(arr);
        for(int i=0; i<arr.length; i++){            
            if(arr[i]==' '){
                hi=i;
                reverse(arr,low,hi);
                low=i+1;
            }else if(i==arr.length-1){
                reverse(arr,low,i+1);
            }
        } 
       return new String(arr);
    }
    
    void reverse(char [] arr, int lo, int hi){
        hi=hi-1;
        while(lo<hi){
            char c =arr[lo];
            arr[lo]=arr[hi];
            arr[hi]=c;
            lo++;
            hi--;
        }
    }

No comments:

Post a Comment