提交后说答案是错误的,请告诉我它的逻辑错误是什么,而不是格式化或其他方法。
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;
}
}
答案 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);