diff --git a/solution/0300-0399/0345.Reverse Vowels of a String/README.md b/solution/0300-0399/0345.Reverse Vowels of a String/README.md index ea02c5f686202..ca05644f78fdc 100644 --- a/solution/0300-0399/0345.Reverse Vowels of a String/README.md +++ b/solution/0300-0399/0345.Reverse Vowels of a String/README.md @@ -175,6 +175,32 @@ function reverseVowels(s: string): string { } ``` +### **Rust** + +```rust +impl Solution { + pub fn reverse_vowels(s: String) -> String { + let vowel = String::from("aeiouAEIOU"); + let mut data: Vec = s.chars().collect(); + let (mut i, mut j) = (0, s.len() - 1); + while i < j { + while i < j && !vowel.contains(data[i]) { + i += 1; + } + while i < j && !vowel.contains(data[j]) { + j -= 1; + } + if i < j { + data.swap(i, j); + i += 1; + j -= 1; + } + } + data.iter().collect() + } +} +``` + ### **...** ``` diff --git a/solution/0300-0399/0345.Reverse Vowels of a String/README_EN.md b/solution/0300-0399/0345.Reverse Vowels of a String/README_EN.md index 9ca513b50829f..be70e63466df8 100644 --- a/solution/0300-0399/0345.Reverse Vowels of a String/README_EN.md +++ b/solution/0300-0399/0345.Reverse Vowels of a String/README_EN.md @@ -151,6 +151,32 @@ function reverseVowels(s: string): string { } ``` +### **Rust** + +```rust +impl Solution { + pub fn reverse_vowels(s: String) -> String { + let vowel = String::from("aeiouAEIOU"); + let mut data: Vec = s.chars().collect(); + let (mut i, mut j) = (0, s.len() - 1); + while i < j { + while i < j && !vowel.contains(data[i]) { + i += 1; + } + while i < j && !vowel.contains(data[j]) { + j -= 1; + } + if i < j { + data.swap(i, j); + i += 1; + j -= 1; + } + } + data.iter().collect() + } +} +``` + ### **...** ``` diff --git a/solution/0300-0399/0345.Reverse Vowels of a String/Solution.rs b/solution/0300-0399/0345.Reverse Vowels of a String/Solution.rs new file mode 100644 index 0000000000000..04383cb7a035a --- /dev/null +++ b/solution/0300-0399/0345.Reverse Vowels of a String/Solution.rs @@ -0,0 +1,21 @@ +impl Solution { + pub fn reverse_vowels(s: String) -> String { + let vowel = String::from("aeiouAEIOU"); + let mut data: Vec = s.chars().collect(); + let (mut i, mut j) = (0, s.len() - 1); + while i < j { + while i < j && !vowel.contains(data[i]) { + i += 1; + } + while i < j && !vowel.contains(data[j]) { + j -= 1; + } + if i < j { + data.swap(i, j); + i += 1; + j -= 1; + } + } + data.iter().collect() + } +}