美文网首页
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