LeetCode 345 Reverse Vowels of a String (in java)

来源:互联网 发布:日文手写输入在线软件 编辑:程序博客网 时间:2024/06/14 04:47

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

自己写的错误代码

自己水平比较次,不会写代码….
看了这道题,感觉还挺简单,自己写下试试手。结果还是没成功…..

public static String reverseVowels(String s){    char sArr[] = s.toCharArray();    int begin = 0;    int end = s.length() - 1;    while(begin > end){        if(sArr[begin] == 'a' || sArr[begin] == 'e' || sArr[begin] == 'i' || sArr[begin] == 'o' || sArr[begin] == 'u'){            if(sArr[end] == 'a' || sArr[end] == 'e' || sArr[end] == 'i' || sArr[end] == 'o' || sArr[end] == 'u'){                char temp = sArr[begin];                sArr[begin] = sArr[end];                sArr[end] = temp;            }            end--;        }        begin++;    }    return new String(sArr);}

这是自己写的,测试运行后,还是输出原有字符串,并没有交换顺序。又调了下,还是不行,再找找原因…..

别人的代码,运行通过

搜索了别人答案,还是很不错的:

public static String reverseVowels(String s) {    ArrayList<Character> vowelsList = new ArrayList<Character>();    vowelsList.add('a');    vowelsList.add('e');    vowelsList.add('i');    vowelsList.add('o');    vowelsList.add('u');    vowelsList.add('A');    vowelsList.add('E');    vowelsList.add('I');    vowelsList.add('O');    vowelsList.add('U');    char[] arr = s.toCharArray();    int begin = 0;     int end = s.length() - 1;    while(begin < end){        if(!vowelsList.contains(arr[begin])){            begin++;            continue;        }        if(!vowelsList.contains(arr[end])){            end--;            continue;        }        char temp = arr[begin];        arr[begin] = arr[end];        arr[end] = temp;        begin++;        end--;     }    return new String(arr);}

或者不使用额外空间的话:

public static String reverseVowels(String s) {    String vowelsList = "aeiouAEIOU";    char[] arr = s.toCharArray();    int begin = 0;     int end = s.length() - 1;    while(begin < end){        if(!vowelsList.contains(String.valueOf(s.charAt(begin)))){            begin++;            continue;        }        if(!vowelsList.contains(String.valueOf(s.charAt(end)))){            end--;            continue;        }        char temp = arr[begin];        arr[begin] = arr[end];        arr[end] = temp;        begin++;        end--;     }    return new String(arr);}

参考{LeetCode – Reverse Vowels of a String (Java)}{http://www.programcreek.com/2015/04/leetcode-reverse-vowels-of-a-string-java/}

0 0
原创粉丝点击