![](/img/trans.png)
[英]JAVA - Reverse String without temp String, array, Stringbuilder, substring
[英]StringBuilder substring and reverse - Java
任何人都可以幫我寫一個Java方法,它接受一個字符串的子串,反轉它並打印結果?
我猜測StringBuilder比String好,但我的問題是StringBuilder.substring()返回一個String。 要繼續使用StringBuilder,我需要創建一個新的StringBuilder對象來執行StringBuilder.reverse()部分。
誰有更好的解決方案呢?
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("abcdefgh");
sb = new StringBuilder(sb.subSequence(2, 5));
sb.reverse();
System.out.println(sb.toString());
}
你可以用它
public String reverseString(String normalString) {
StringBuilder sb = new StringBuilder();
for(int i = normalString.length() - 1; i >= 0; --i)
sb.append(normalString.charAt(i));
return sb.toString();
}
你可以嘗試這樣的事情:
String s = "Achintya";
List<String> myList = new ArrayList<String>(Arrays.asList(s.split("")));
Collections.sort(myList, Collections.reverseOrder());
System.out.println(myList);
如果您希望用戶輸入非反轉字符串的start
和end
指示,則可以通過重新映射索引值輕松實現此目的。
下面是您要求的1個StringBuilder
的工作示例:
public static void main(String[] args) {
final StringBuilder sb = new StringBuilder("abcdefgh");
final int startIndex = 2;
final int endIndex = 5;
sb.reverse();
final String output = substring(sb.toString(), startIndex, endIndex);
System.out.println("Result: " + output);
}
//Retrieve the substring of a reversed string
private static String substring(String input, int start, int end) {
start = map(start, 0, input.length(), input.length(), 0);
end = map(end, 0, input.length(), input.length(), 0);
String substring = input.substring(end, start);
return substring;
}
//Map value from the min,max range, to the new minRange-maxRange range.
private static int map(float value, float min, float max, float minRange, float maxRange) {
return Math.round(minRange + (maxRange - minRange) * ((value - min) / (max - min)));
}
你的答案已經足夠好了。 如果你想使用substring方法,這也可行,
public static void main(String[] args)
{
StringBuilder revWord = new StringBuilder("abcdefgh".substring(2,5));
revWord.reverse();
System.out.println(revWord);
}
只需撤銷您的操作:
StringBuilder sb2 = new StringBuilder("abcdefgh");
sb2.reverse();
System.out.println(sb2.subSequence(sb2.length()-5, sb2.length()-2));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.