345. Reverse Vowels of a String

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

My bad solution:

import java.util.Arrays;
public class Solution {
    public String reverseVowels(String s) {
        int top=0;
        int end=s.length()-1;
        boolean top_flag=false;
        boolean end_flag=false;
        char[] data=s.toCharArray();
        while(top<end){
            if(top_flag&&end_flag){
                top_flag=false;
                end_flag=false;
                char c=data[top];
                data[top]=data[end];
                data[end]=c;
                top++;
                end--;
                continue;
                }
            if(!top_flag){
                if(data[top]=='a'||data[top]=='e'||data[top]=='i'||data[top]=='o'||data[top]=='u'||data[top]=='A'||data[top]=='E'||data[top]=='I'||data[top]=='O'||data[top]=='U')
                    top_flag=true;
                else
                    top++;
                 }    
            if(!end_flag){
                if(data[end]=='a'||data[end]=='e'||data[end]=='i'||data[end]=='o'||data[end]=='u'||data[end]=='A'||data[end]=='E'||data[end]=='I'||data[end]=='O'||data[end]=='U')
                    end_flag=true;
                else
                    end--;
                 }             
            }
            return new String(data);  
    }
}
Other:

public class Solution {
public String reverseVowels(String s) {
    if(s == null || s.length()==0) return s;
    String vowels = "aeiouAEIOU";
    char[] chars = s.toCharArray();
    int start = 0;
    int end = s.length()-1;
    while(start<end){
        
        while(start<end && !vowels.contains(chars[start]+"")){
            start++;
        }
        
        while(start<end && !vowels.contains(chars[end]+"")){
            end--;
        }
        
        char temp = chars[start];
        chars[start] = chars[end];
        chars[end] = temp;
        
        start++;
        end--;
    }
    return new String(chars);
}}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值