文章目錄
- 概要
- 示例
- (1)使用StringBuilder的reverse方法
- (2)使用charAt和循環
- (3)使用雙指針
- (4)使用遞歸
- 總結
概要
在Java中,有多種方法可以將字符串反轉,我這里列舉四種。
示例
(1)使用StringBuilder的reverse方法
StringBuilder類提供了一個reverse()方法,它可以非常方便地反轉字符串。
public String reverseStringUsingStringBuilder(String str) { if (str == null || str.isEmpty()) { return str; } StringBuilder sb = new StringBuilder(str); sb.reverse(); return sb.toString();
}
(2)使用charAt和循環
你可以通過遍歷字符串中的每個字符,并從后向前將其放入一個新的字符數組或StringBuilder中來實現反轉。
public String reverseStringUsingCharArray(String str) { if (str == null || str.isEmpty()) { return str; } char[] charArray = str.toCharArray(); int left = 0; int right = charArray.length - 1; while (left < right) { char temp = charArray[left]; charArray[left] = charArray[right]; charArray[right] = temp; left++; right--; } return new String(charArray);
}
(3)使用雙指針
與方法二類似,但使用兩個指針來避免額外的臨時變量。
public String reverseStringUsingTwoPointers(String str) { if (str == null || str.isEmpty()) { return str; } char[] charArray = str.toCharArray(); int left = 0; int right = charArray.length - 1; while (left < right) { char temp = charArray[left]; charArray[left] = charArray[right]; charArray[right] = temp; left++; right--; } return new String(charArray);
}
注意:方法二和方法三在本質上是相同的,只是命名和注釋有所不同。
(4)使用遞歸
雖然遞歸在處理大字符串時可能不是最高效的方法,但它仍然是一種可能的解決方案。
public String reverseStringUsingRecursion(String str) { if (str == null || str.length() <= 1) { return str; } return reverseStringUsingRecursion(str.substring(1)) + str.charAt(0);
}
總結
在面試中,你可以根據問題的上下文和面試官的期望來選擇最合適的方法。通常情況下,使用StringBuilder的reverse()方法是最簡單且高效的方法。但在解釋時,也可以提到其他方法以展示你對Java字符串處理的深入理解。