824. Goat Latin - LeetCode

Questioin

824. Goat Latin

Solution

题目大意:根据要求翻译句子

思路:转换成单词数组,遍历数组,根据要求转换单词

Java实现:

用Java8的流实现,效率太低

public String toGoatLatin(String S) {
    final String[] arr = S.split(" ");
    final int[] idx = {0};
    return Arrays.stream(S.split(" "))
        .map(s -> convert(s, ++idx[0]))
        .reduce("", (s1, s2) -> s1 + " " + s2).trim();
}

String convert(String ori, int count) {
    String pre = "";
    // begin with vowel aeiou
    char first = ori.charAt(0);
    if (first == 'A' || first == 'a'
        || first == 'E' || first == 'e'
        || first == 'I' || first == 'i'
        || first == 'O' || first == 'o'
        || first == 'U' || first == 'u'
       ) {
        pre = ori;
    } else {
        // begin with consonant not aeiou
        pre = ori.substring(1) + first;
    }

    // add a
    char[] a = new char[count];
    for (int i = 0; i < count; i++) {
        a[i] = 'a';
    }
    return pre + "ma" + String.valueOf(a);
}

public String toGoatLatin(String S) {
    StringBuilder sb = new StringBuilder();
    int count = 1;
    for(String tmp : S.split(" ")) {
        sb.append(convert(tmp, count++)).append(" ");
    }
    return sb.toString().trim();
}

猜你喜欢

转载自www.cnblogs.com/okokabcd/p/9470373.html