美文网首页
345. 反转字符串中的元音字母

345. 反转字符串中的元音字母

作者: 六十年目裁判长亚玛萨那度 | 来源:发表于2019-01-10 10:14 被阅读0次

题目描述:编写一个函数,以字符串作为输入,反转该字符串中的元音字母。

难度:水

int find(char ch) {
    if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
        return 1;
    }
    if (ch == 'A' || ch == 'E' || ch == 'I' || ch == 'O' || ch == 'U') {
        return 1;
    }
    return 0;
}

char* reverseVowels(char* s) {
    int len = -1;
    for (int i = 0; s[i]; i++) {
        if (find(s[i]) == 1) len += 1;
    }
   
    char *arr = (char *)calloc(len + 5, sizeof(char));
    
    int cnt = 0;
    int i = 0;
    for (; s[i]; i++) {
        if (find(s[i]) == 1) arr[cnt++] = s[i];
    }
    int j = 0;
    while (i >= 0 && cnt >= j) {
        if (find(s[i]) == 1) {
            s[i] = arr[j++];
        }
        i -= 1;
    } 
    
    // printf("%d\n", i);
    free(arr);
    return s;
}

在申请arr临时字符串的大小上有两种考虑:
1.直接申请s串的大小,空间开的多,消耗内存多,但是会变快
2.遍历一下s串,先查看有多少元音字母,再申请,这样要多遍历一遍s串,运行时间增加

相关文章

网友评论

      本文标题:345. 反转字符串中的元音字母

      本文链接:https://www.haomeiwen.com/subject/fquorqtx.html