反轉字串中的母音字母
題目描述:編寫一個函式,以字串作為輸入,反轉該字串中的母音字母。
示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/probl...
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:棧倒序
- 首先初始化母音字母列表vowels;
- 然後迴圈判斷s中的每一個字元,將母音字母依次放入棧中;
- 然後再迴圈s一遍,將出現的母音字母用棧頂元素出棧後替換;
- 迴圈處理完成後即是反轉後的字串。
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class LeetCode_345 {
/**
* 母音字母列表
*/
private static List<Character> vowels = new ArrayList<>();
static {
// 初始化所有的母音字母
vowels.add('a');
vowels.add('e');
vowels.add('i');
vowels.add('o');
vowels.add('u');
vowels.add('A');
vowels.add('E');
vowels.add('I');
vowels.add('O');
vowels.add('U');
}
public static String reverseVowels(String s) {
if (s == null || s.length() < 2) {
return s;
}
char[] sList = s.toCharArray();
Stack<Character> vowelStack = new Stack<>();
for (char c : sList) {
if (vowels.contains(c)) {
// 將母音字母放入棧中
vowelStack.push(c);
}
}
for (int i = 0; i < sList.length; i++) {
if (vowels.contains(sList[i])) {
// 將母音字母從棧中取出,倒序取出
sList[i] = vowelStack.pop();
}
}
return new String(sList);
}
public static void main(String[] args) {
System.out.println(reverseVowels("hello"));
}
}
【每日寄語】 無論別人怎麼看,我絕不打斷自己節奏,喜歡的事情自然可以堅持。