我想按字反向字符串中的字。但我遇到了一些麻煩。我知道很多人使用StringBuilder
來解決這個問題,但我想在沒有它的情況下嘗試一下。在一個字符串中按字反向字
輸入:
Hi there
輸出:
iH ereht
目前,我的輸入字符串的最後一個單詞停止。我認爲這是由於在我的代碼中,代碼的反向部分僅在檢測到' '
或空間時纔會反轉。當我到達字符串的末尾時,我通過執行反轉部分來改變它。 (i == len
)但是,這似乎並沒有解決問題。我認爲在我的if
,else if
陳述和for loop
也有一些邏輯錯誤。我想知道是否有人能指引我走向正確的方向。
測試用例字符串是
"Hi there Mr.Doge!"
我得到現在的輸出是
iH ereht
< - 在字符串的結尾空間。
隨着代碼的進行,最後一個字(Mr.Doge!
)被存儲到temp
中,但打印出的文本不是反轉的。
這裏是輸出,當我編譯代碼:
0
H
1
Hi
2
i
iH
3
t
4
th
5
the
6
ther
7
there
8
iH e
iH er
iH ere
iH ereh
iH ereht
9
M
10
Mr
11
Mr.
12
Mr.D
13
Mr.Do
14
Mr.Dog
15
Mr.Doge
16
Mr.Doge!
iH ereht
我的代碼:
public static String reverseWord(String str){
int len = str.length();
String reverse = "", temp = "";
for (int i = 0; i < len; i++) {
System.out.println(i);
if (str.charAt(i) != ' '){
temp += str.charAt(i);
System.out.println(temp);
}
else if (str.charAt(i) == ' ' || i == len){
//if (str.charAt(i) == ' ') {
for (int j = temp.length() - 1; j >= 0; j--) { // reverse
reverse += temp.charAt(j); // append in reverse
System.out.println(reverse);
}
reverse += ' ';
temp = "";
}
}
return reverse;
}
爲什麼你不希望使用'StringBuilder' ?如果您使用字符串,則每次追加字符串時都會創建一個新字符串並降低效率。至少在C#中,但我相信這同樣適用於Java。 – pcnThird
在上面的代碼中,'for'循環的條件是'i
Manish
我不是所有charats和數字的粉絲。也許[這種方法](https://ideone.com/D2ZU3W)可能對你有幫助。 –