Java 在字符串中逐字反转
我正试图一个字一个字地倒转字符串中的单词。但是我遇到了一点麻烦。我知道很多人使用StringBuilder来解决这个问题,但我想在没有它的情况下尝试一下 输入:Java 在字符串中逐字反转,java,string,Java,String,我正试图一个字一个字地倒转字符串中的单词。但是我遇到了一点麻烦。我知道很多人使用StringBuilder来解决这个问题,但我想在没有它的情况下尝试一下 输入: Hi there 输出: iH ereht 当前,我的输入字符串在最后一个单词处停止。我假设这是因为在我的代码中,代码的反向部分仅在检测到“”或空格时才会反向。我通过在到达字符串末尾时执行反向部分来改变这一点。i==len但这似乎无法解决问题。我假设if、else-if语句和for循环中存在一些逻辑错误。我想知道是否有人能给我指引正
Hi there
输出:
iH ereht
当前,我的输入字符串在最后一个单词处停止。我假设这是因为在我的代码中,代码的反向部分仅在检测到“”或空格时才会反向。我通过在到达字符串末尾时执行反向部分来改变这一点。i==len但这似乎无法解决问题。我假设if、else-if语句和for循环中存在一些逻辑错误。我想知道是否有人能给我指引正确的方向
我一直在处理的测试用例字符串是
你好,多格先生
我现在得到的结果是
在你的循环之外反转,检查你是否像这样处于最后一个字-
public static String reverseWord(String str) {
int len = str.length();
String reverse = "", temp = " ";
for (int i = 0; i < len; i++) {
if (str.charAt(i) != ' ') {
temp += str.charAt(i);
} else if (str.charAt(i) == ' ' || i == len) {
if (i + 1 < len) {
for (int j = temp.length() - 1; j >= 0; j--) { // reverse
reverse += temp.charAt(j); // append in reverse
}
temp = " ";
} else {
temp = "";
}
}
}
for (int j = temp.length() - 1; j >= 0; j--) { // reverse
reverse += temp.charAt(j); // append in reverse
}
return reverse;
}
在你的循环之外反转,并检查你是否像这样处于最后一个单词-
public static String reverseWord(String str) {
int len = str.length();
String reverse = "", temp = " ";
for (int i = 0; i < len; i++) {
if (str.charAt(i) != ' ') {
temp += str.charAt(i);
} else if (str.charAt(i) == ' ' || i == len) {
if (i + 1 < len) {
for (int j = temp.length() - 1; j >= 0; j--) { // reverse
reverse += temp.charAt(j); // append in reverse
}
temp = " ";
} else {
temp = "";
}
}
}
for (int j = temp.length() - 1; j >= 0; j--) { // reverse
reverse += temp.charAt(j); // append in reverse
}
return reverse;
}
经过几次修改后,这一定能奏效。请参阅代码中的注释,以查看我修改的内容 代码: 注:
我删除了嵌套的,因为它不是必需的。经过几次修改后,这必须起作用。请参阅代码中的注释,以查看我修改的内容 代码: 注:
我删除了嵌套的,因为它不是必需的。如果我这样做,我只会将整个字符串存储在arraylist中。 然后说:
for(i=0;i<len;i++)
temp.size()=len;
temp(length-i)=str(i);
print temp;
如果我要这样做,我会将整个字符串存储在arraylist中。 然后说:
for(i=0;i<len;i++)
temp.size()=len;
temp(length-i)=str(i);
print temp;
试试这个变化
for (char c : str.toCharArray()) {
if (c != ' '){
temp = c + temp;
} else {
reverse += temp + ' ';
temp = "";
}
}
reverse += temp;
试试这个变化
for (char c : str.toCharArray()) {
if (c != ' '){
temp = c + temp;
} else {
reverse += temp + ' ';
temp = "";
}
}
reverse += temp;
你也可以这样使用循环
public String reverseString(String str){
String reverse="";
for(int i=str.length()-1; i>=0; i--){
reverse = reverse + str.charAt(i);
}
return reverse;
}
你也可以这样使用循环
public String reverseString(String str){
String reverse="";
for(int i=str.length()-1; i>=0; i--){
reverse = reverse + str.charAt(i);
}
return reverse;
}
为什么不想使用StringBuilder?如果使用字符串,则每次附加到字符串时都会创建一个新字符串,从而降低效率。至少在C语言中是这样,但我相信Java也是如此。在上面的代码中,for循环的条件是I