20200320:反转字符串中的元音字母(leetcode345)

反转字符串中的元音字母

  • 题目
  • 思路与算法
  • 代码实现
  • 复杂度分析

题目

20200320:反转字符串中的元音字母(leetcode345)_第1张图片

思路与算法

  1. 在复习没太多时间,因此随机一道中等难度以下的题,这道是一个很简单的双指针,不需要太多想法,直接双指针实现即可。
  2. 左指针从左边开始找元音字母,找到为止,右指针从右边开始找,找到为止,找到之后交换这两个原因字母,最好先将字符串转化为字符数组比较方便。

代码实现

package com.immunize.leetcode.reverseVowels;

/**
 * 345. 反转字符串中的元音字母
 * 
 * @author Mr IMMUNIZE
 *
 */
public class Solution {
	public String reverseVowels(String s) {
		String res = "";
		char[] ch = s.toCharArray();
		int left = 0;
		int right = s.length() - 1;
		while (left < right) {
			while (left < s.length() && !isVowel(ch[left])) {
				left++;
			}
			while (right >= 0 && !isVowel(ch[right])) {
				right--;
			}
			if (left >= right) {
				break;
			}
			char tmp = ch[left];
			ch[left] = ch[right];
			ch[right] = tmp;
			left++;
			right--;
		}
		res = new String(ch);
		return res;
	}

	private boolean isVowel(char c) {
		if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' || c == 'A' || c == 'E' || c == 'I' || c == 'O'
				|| c == 'U') {
			return true;

		} else {
			return false;
		}

	}
}

复杂度分析

时间复杂度: O(N)

你可能感兴趣的:(leetcode学习记录篇)