Codewars Solution:Reverse words

Level 7 kyu :Reverse words

字符串反转每一个单词,但保留所有空格

例:

"This is an example!" ==> "sihT si na !elpmaxe"

"double spaces" ==> "elbuod secaps"

主要方法:

charAt(index)

第一次提交:测试用例可以通过,但没有通过Attempt,原因没有解决连续空格的问题。

 1 public static String camelCase(final String original) {
 2         String[] array=original.split(" ");//分割字符串
 3         for(int i=0;i<array.length;i++) {//遍历出每一个单词进行反转
 4             String s="";
 5                 for(int j=array[i].length()-1;j>=0;j--) {
 6                     if(array[i]!=" ") {
 7                         s=s+array[i].charAt(j);
 8                     }
 9                 }
10             array[i]=s;
11         }
12         String out="";
13         for(int i=0;i<array.length;i++) {//最后拼接,是否到最后一个单词,是就不加空格了
14             out=(i==array.length-1)?out+array[i]:out+array[i]+" ";
15         }
16         return out;
17      }

他人解决方案1:

public static String reverseWords(final String original) {
        String out="";  //默认是空串
        String a_word="";
        for (int i=0;i<original.length();i++) {
            if (original.charAt(i) != ' ') {  //如果不是空格,就从前加入一个单词,使单词逆序。
                a_word = original.charAt(i) + a_word;
            }
            if (original.charAt(i) == ' ') {  //如果是空格,就将单词放入输出字符串,
                out = out + a_word;
                a_word = "";  //单词置空,下次接着开始
                out = out + " ";  //输出字符串加空格
            }
        }
        out = out + a_word;
        return out;
    }

方案2:

public static String reverseWords(final String original)
  { 
    String[] array = original.split(" ");
    
    if(array.length == 0) 
        return original;
    
    
    int i = 0;
    for(String string : array){
        array[i] = new StringBuilder(string).reverse().toString();
        i++;
    }
    
    return String.join(" ",array);
  }

最后bb一句:同样是加了空格,为什么我的不能通过。(╯-_-)╯╧╧

猜你喜欢

转载自www.cnblogs.com/mc-web/p/13170552.html