当前位置:网站首页>leetcode刷题_反转字符串中的元音字母

leetcode刷题_反转字符串中的元音字母

2022-07-06 01:19:00 身影王座

题目描述

 Java解决方法

import java.util.*;
class Solution {
    public String reverseVowels(String s) {
        // ArrayList中有判断一个字符是否在一个数组中
        Collection c = new ArrayList();
        c.add('a');c.add('e');c.add('i');c.add('o');c.add('u');
        c.add('A');c.add('E');c.add('I');c.add('O');c.add('U');
        int head = 0;
        int tail = s.length() - 1;
        // 修改字符串中某个字符需要StringBuilder
        StringBuilder s1 = new StringBuilder(s);
        while(head < tail)
        {
            char a1 = s1.charAt(head);
            char a2 = s1.charAt(tail);
            if(!c.contains(a1))
            {
                head++;
            }
            else if(!c.contains(a2))
            {
                tail--;
            }
            else
            {
                s1.setCharAt(head, a2);
                s1.setCharAt(tail, a1);
                head++;
                tail--;
            }
        }
        String s2 = s1.toString();
        return s2;
    }
}

 

C语言解决方法

int nocontains(char a)
{
    if(a != 'a' && a != 'A' && a != 'e' && a != 'E' && a != 'i' && a != 'I' && a != 'o' && a != 'O' && a != 'u' && a != 'U')
    {
        return 1;
    }
    return 0;
}

char * reverseVowels(char * s){
    int head = 0;
    int tail;
    tail = strlen(s) - 1;
    while(head < tail)
    {
        char a;
        char b;
        a = s[head];
        b = s[tail];
        if(nocontains(a))
        {
            head++;
        }
        else if(nocontains(b))
        {
            tail--;
        }
        else
        {
            s[head] = b;
            s[tail] = a;
            head++;
            tail--;
        }
    }
    return s;

}

 

原网站

版权声明
本文为[身影王座]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_42148307/article/details/125604634