LeetCode-345. Reverse Vowels of a String


Description

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".

題目分析
本題要求將所給字符串中的元音字母逆序排列,輔音字母不變,然后輸出變換后的字符串。元音字母共5個(gè)('a','e','i','o','u'),其余均為輔音字母。
注意:本題所給字符串中包含大小寫(xiě)母,標(biāo)點(diǎn)符號(hào)等。

解題思路

題目要求將字符串中的元音字母逆序排列,第一步,復(fù)制所給字符串,找到字符串中的元音字母并標(biāo)記位置,然后將其按照在字符串中出現(xiàn)的順序存儲(chǔ)下來(lái)。第二步,按逆序?qū)⒋鎯?chǔ)的元音字母依次填入新字符串標(biāo)記的位置。第三步,返回新的字符串。

C語(yǔ)言代碼

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h> 


char* reverseVowels(char* strs) {
    int len=strlen(strs),i=0,j=0;
    char string1[len+1];             //非元音字符集 
    char string2[len+1];            //元音字符集 
    char *temp;
    temp=(char *)malloc(len+1);
    for (i=0;i<len;i++)
    {
        if(strs[i]=='a'||strs[i]=='e'||strs[i]=='i'||strs[i]=='o'||strs[i]=='u'
                ||strs[i]=='A'||strs[i]=='E'||strs[i]=='I'||strs[i]=='O'||strs[i]=='U')                //查找元音字母
            {
                string2[j]=strs[i];
                string1[i]=1;      //標(biāo)記元音字母位置
                j++;
             }
        else 
            string1[i]=strs[i];
     } 
    
    string2[j]='\0';
    string1[i]='\0';
    i=0;
    while(string1[i]!='\0')
        {
            if(string1[i]==1)             //ascii為1的字符是通信控制字符,不會(huì)出現(xiàn)在字符串中,因而將其填入 
            {
                string1[i]=string2[j-1];        //逆序填入
                j--;
            }
            i++;
        }
    strcpy(temp,string1);
    return temp;
}


int main()
{
    char *strs="0:u`bVbu`:0";
    char *string;
    
   string=reverseVowels(strs);
    printf("%s",string);
    return 0;
 } 

參考文獻(xiàn)
[1] https://leetcode.com/problems/reverse-vowels-of-a-string/#/description

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容