Wednesday, 6 September 2017

Given a string, reverse only vowels in it; leaving rest of the string as it is

public class Vowel {  
      
      public static void main(String[] str) {  
          
        String originalstring = "MODERNPATHSHALA";  
        String reversedString =  reverseVowels(originalstring);  
        System.out.println(originalstring + " after vowels reversed = " + reversedString);  
  
    }  
      
      
    public static String reverseVowels(String originalstring) {  
        if (originalstring == null || originalstring.length() < 2)  
            return originalstring;  
  
        int len = originalstring.length();  
        int i = 0;  
        int j = len - 1;  
        char[] array = originalstring.toCharArray();  
        while (i < j) {  
            while (i < j && !isVowel(array[i]))  
                i++;  
            while (j > i && !isVowel(array[j]))  
                j--;  
            swap(array, i, j);  
            i++;  
            j--;  
        }  
        return String.valueOf(array);  
    }  
  
    
    public static boolean isVowel(char c) {  
        switch (c) {  
        case 'a':  
        case 'e':  
        case 'i':  
        case 'o':  
        case 'u':  
        case 'A':  
        case 'E':  
        case 'I':  
        case 'O':  
        case 'U':  
            return true;  
        default:  
            return false;  
        }  
    }  
  
    public static void swap(char[] arr, int i, int j) {  
        char tmp = arr[i];  
        arr[i] = arr[j];  
        arr[j] = tmp;  
    }  
}  

No comments:

Post a Comment

test your brain

https://www.youtube.com/watch?v=bEU9dkOG7co&feature=youtu.be