我的代码在java中反转给定字符串的每个单词有什么问题?

时间:2018-06-13 06:34:38

标签: java string reverse

提交后说答案是错误的,请告诉我它的逻辑错误是什么,而不是格式化或其他方法。

public class Solution {
  public static String reverse(String s1){
    int i=s1.length()-1;
    String s2="";
    while(i>=0){
        s2=s2+s1.charAt(i--);     
    }
    s2=s2+' ';
    return s2;
  }
    // Return the reversed string. No need to print

  public static String reverseEachWord(String s1) {
      s1=s1+"";
    String s2="";
    int i=0;
    char ch;
    String temp="";
    while(i<s1.length()){
      ch=s1.charAt(i);
      if(ch!=' '){
        temp=temp+ch;
        i++;  
      }
      else{
        temp=reverse(temp);
        s2=s2+temp;
        temp="";
        i++;
      }
    }
    return s2;  
    }
}

3 个答案:

答案 0 :(得分:6)

很抱歉,但我发现很多问题。

  • 首先,我建议您下次使用StringBuilder 经常操纵字符串。

  • 其次,如果s1是单个单词而不是像s1 =&#34; question&#34;这样的句子,在你的情况下,它将存储在temp中,你的while循环结束。 s2仍然是空的,你得到了错误的答案。更重要的是,如果s1是一个包含许多单词的句子,则最后一个单词将具有与上述相同的问题。

  • 这一行有一个错误temp = reverse(s2);你的s2在开始时是空的,它会保持这种状态。我想你想写temp = reverse(temp);
顺便说一下,我没有运行你的代码,现在我只在你的代码中遇到了这些问题。

答案 1 :(得分:1)

您的reverseWord函数有一些逻辑错误,请将您的函数更新为: 改变

s1 = s1 +"";

s1 = s1 + " ";

因为你需要连接空间。

而不是如果你可以使用while循环来进一步简化你的代码。

public static String reverseEachWord(String s1) {

    s1 = s1 + " ";
    String s2 = "";
    int i = 0;
    char ch;
    String temp = "";
    while (i < s1.length()) {

        while (s1.charAt(i) != ' ') {
            temp = temp + s1.charAt(i);
            i++;
        } 
        temp = reverse(temp);
        s2 = s2 + temp;
        temp = "";
        i++;

    }

    return s2;

}

答案 2 :(得分:0)

还有很多其他方法可以做到这一点。但是如果你想改变代码,那么它就是

public static String reverseEachWord(String s1) {

        s1 = s1 + " ";
        String s2 = "";
        int i = 0;
        char ch;
        String temp = "";
        while (i < s1.length()) {
            ch = s1.charAt(i);
            if (ch != ' ') {
                temp = temp + ch;
                i++;
            } else {
                temp = reverse(temp);
                s2 = s2 + temp;
                temp = "";
                i++;
            }

        }

        return s2;

    }
  

从temp = reverse(s2)改变; to temp = reverse(temp);