欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 345 Reverse Vowels of a String

程序员文章站 2024-03-06 09:58:19
...

1. 题目分析

  题目描述:
Write a function that takes a string as input and reverse only the vowels of a string.

Example 1:
Given s = “hello”, return “holle”.

Example 2:
Given s = “leetcode”, return “leotcede”.

Note:
The vowels does not include the letter “y”.

  题目含义:只对string中的元音字符进行交换,英语中原因包括a、e、i、o、u。
  题目分析:使用二分法的方法,使用两个指针分别从两端进行查找,直到均查找到符合条件的字符后进行交换。在题目中,不要忘记对元音的判断要包含大写和小写两种情况。

2. 题目解答–cpp

class Solution {
public:
    // 判定传入的字符是否为元音
    bool isVowels(char t) {
        char temp[] = "aeiouAEIOU";
        for (int i = 0; i < 10; i++) {
            if(t == temp[i]) {
                return true;
            }
        }
        return false;
    }

    string reverseVowels(string s) {
        char t;
        int front = 0;
        int end = s.size()-1;
        while (front < end) {
            // 只有两个指针指向的字符均为元音时才进行交换
            if (isVowels(s[front]) && isVowels(s[end])) {
                t = s[front];
                s[front] = s[end];
                s[end] = t;
                front++;
                end--;
            }
            else {
                // front从当前位置开始向后查找,直到找到元音为止
                if (!isVowels(s[front])) {
                    front++;
                }
                // end从当前位置开始向前查找,直到找到元音为止
                if (!isVowels(s[end])) {
                    end--;
                }
            }
        }
        return s;
    }
};