824. 山羊拉丁文『简单』

题目来源于力扣(LeetCode

一、题目

824. 山羊拉丁文

题目相关标签:字符串

说明:

  • S 中仅包含大小写字母和空格。单词间有且仅有一个空格。
  • 1 <= S.length <= 150

二、解题思路

  1. 对字符串 S 进行空格的分组,得到单词数组

  2. 遍历单词数组,对每一个单词都判断单词的首字母是否为元音字母(不区分大小写)

三、代码实现

public static String toGoatLatin(String S) {
    StringBuilder ans = new StringBuilder();
    // a 的个数初始为 1
    StringBuilder acount = new StringBuilder("a");
    String maStr = "ma";
    String[] strs = S.split(" ");

    for (int i = 0; i < strs.length; i++) {
        String str = strs[i];
        char c = str.charAt(0);
        // 对单词中的首位字符进行判断
        if (isvowel(c)) {
            ans.append(str);
        } else {
            // 非元音字母时,字符串的首位挪到末位后
            ans.append(str.substring(1));
            ans.append(c);
        }
        // 为字符串添加字符串 ma 和字符串索引 + 1 个长度的字符 a
        ans.append(maStr);
        ans.append(acount);
        // 当前字符串不是数组的最后一位时,才加空格分隔符
        if (i < strs.length - 1) {
            ans.append(" ");
        }
        // a 的个数每次加 1
        acount.append("a");
    }
    return ans.toString();
}

// 判断某字符是否元音字母
public static boolean isvowel(char c) {
    return c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U'
        || c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}

四、执行用时

五、部分测试用例

public static void main(String[] args) {
    String S = "I speak Goat Latin";  // output:"Imaa peaksmaaa oatGmaaaa atinLmaaaaa"

//    String S = "The quick brown fox jumped over the lazy dog";  
    // output:"heTmaa uickqmaaa rownbmaaaa oxfmaaaaa umpedjmaaaaaa overmaaaaaaa hetmaaaaaaaa azylmaaaaaaaaa ogdmaaaaaaaaaa"
    String result = toGoatLatin(S);
    System.out.println(result);
}
posted @ 2020-05-27 21:29  知音12138  阅读(209)  评论(0编辑  收藏  举报