Overview
A string is given. The objective is to reverse all vowels in that string
Example 1
Input: "simple"
Output: "sempli"
Example 2
Input: "complex"
Output: "cemplox"
Program
Below is the program for the same
package main
import "fmt"
func reverseVowels(s string) string {
runeS := []rune(s)
lenS := len(runeS)
for i, j := 0, lenS-1; i < j; {
for i < j {
if !vowel(runeS[i]) {
i++
} else {
break
}
}
if i == j {
break
}
for i < j {
if !vowel(runeS[j]) {
j--
} else {
break
}
}
if i == j {
break
}
runeS[i], runeS[j] = runeS[j], runeS[i]
i++
j--
}
return string(runeS)
}
func vowel(s rune) bool {
if s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u' {
return true
}
if s == 'A' || s == 'E' || s == 'I' || s == 'O' || s == 'U' {
return true
}
return false
}
func main() {
output := reverseVowels("simple")
fmt.Println(output)
output = reverseVowels("complex")
fmt.Println(output)
}
Output:
sempli
cemplox
Also, check out our system design tutorial series here – System Design Tutorial Series