345. Reverse Vowels of a String(easy)

mac2025-01-08  34

Easy

433818FavoriteShare

Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:

Input: "hello"

Output: "holle"

Example 2:

Input: "leetcode"

Output: "leotcede"

Note:The vowels does not include the letter "y".

 

C++:

/* * @Autor: SourDumplings * @Date: 2019-09-12 23:48:51 * @Link: https://github.com/SourDumplings/ * @Email: changzheng300@foxmail.com * @Description: https://leetcode.com/problems/reverse-vowels-of-a-string/ */ class Solution { public: string reverseVowels(string s) { set<char> vowels({'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'}); int l = s.length(); int i = 0, j = l - 1; while (i < j) { while (i < j && vowels.find(s[i]) == vowels.end()) ++i; while (i < j && vowels.find(s[j]) == vowels.end()) --j; if (i < j) { swap(s[i], s[j]); ++i; --j; } } return s; } };

Java:

import java.util.Set; /* * @Autor: SourDumplings * @Date: 2019-09-13 15:51:47 * @Link: https://github.com/SourDumplings/ * @Email: changzheng300@foxmail.com * @Description: https://leetcode.com/problems/reverse-vowels-of-a-string/ */ class Solution { public String reverseVowels(String s) { int i = 0, j = s.length() - 1; char[] ss = s.toCharArray(); Set<Character> set = new HashSet<>(); set.add('a'); set.add('e'); set.add('i'); set.add('o'); set.add('u'); set.add('A'); set.add('E'); set.add('I'); set.add('O'); set.add('U'); while (i < j) { while (i < j && !set.contains(ss[i])) { ++i; } while (i < j && !set.contains(ss[j])) { --j; } if (i < j) { char temp = ss[i]; ss[i] = ss[j]; ss[j] = temp; ++i; --j; } } return String.copyValueOf(ss); } }

 

最新回复(0)