双指针算法-翻转元音字母
public class StringSwap { public static void main(String[] args) { String s1 = "hello"; String s2 = "leetcode"; System.out.println(swapYuanyinString(s2)); } private static String swapYuanyinString(String s) { int length = s.length(); int l = 0; int r = length - 1; char[] chars = s.toCharArray(); while (l < r) { if (isYuanyinString(chars[l]) && isYuanyinString(chars[r])) { swap(chars, l, r); l++; r--; } if (!isYuanyinString(chars[l])) { l++; } if (!isYuanyinString(chars[r])) { r--; } } return new String(chars); } private static boolean isYuanyinString(char s) { return "aeiouAEIOU".indexOf(s) >= 0; } private static void swap(char[] arr, int l, int r) { char c = arr[l]; arr[l] = arr[r]; arr[r] = c; } }
返回: