[英]How to reverse a String with Stringbuilder and for loop
我設法反轉一個 String 使其成為一個字符數組,也在 Stringbuilder 上使用 .reverse 方法,設法用另一個 String 和一個 for 循環來做到這一點(我讀到這不是一個好主意,因為它會損害性能),但我不知道如何使用 Stringbuilder 和 for 循環反轉字符串。 它給了我錯誤 - “左側必須是一個變量”。 還嘗試為 Stringbuilder 設置長度,但看起來我遺漏了一些東西。 我試圖在 Stringbuilder 的括號外設置索引,因為它們用於參數,但我只是在猜測如何做,也嘗試了 .append 。
public class Task1 {
public static void main(String[] args) {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
int j = 0;
for (int i = str.length()-1; i > 0; i--) {
printstr(j) = str[i];
}
}
}
我認為您在正確的路線上,只是我要更改的幾件事:首先,我們能夠指定StringBuilder
的長度,因為我們知道它與我們正在反轉的String
長度相同。
沒有必要遍歷整個數組,只需一半的數組就足以執行本質上只是切換字符的操作。 所以最右邊的字符現在是最左邊的字符,這節省了一點計算。
public static void main(String[] args) throws IOException {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
printStr.setLength(str.length());
for(int i =0; i<str.length()/2;i++){
char left = str.charAt(i);
final int fromRight = str.length() - i - 1;
printStr.insert(i, str.charAt(fromRight));
printStr.insert(fromRight, left);
}
}
以下是角色切換本質上如何工作的直觀表示:可以在此處找到更多信息
好的,所以你犯了多個錯誤,你試圖通過使用括號訪問索引,你沒有迭代整個字符串,因為你的循環條件是 i > 0,它應該是 i >= 0,你的循環是錯誤的(忽略括號),你可以結合 append() 和 charAt() 方法來做你需要的:
for (int i = str.length()-1; i >= 0; i--) {
printStr.append(str.charAt(i));
}
我們從字符串的最后一個索引到索引 0,所以我們從字符串的末尾開始,並將每個字符附加到我們的 StringBuilder。 最后你有你的反向字符串。
public class HelloWorld {
public static void main(String[] args) {
System.out.println(reverseString("Example"));
}
public static String reverseString(String str) {
StringBuilder builder = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
builder.append(str.charAt(i));
}
return builder.toString();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.