use*_*275 81 java string stringbuilder insert append
我只能用String执行此操作,例如:
String str="";
for(int i=0;i<100;i++){
str=i+str;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用StringBuilder实现这个目的?谢谢.
Meh*_*dad 167
StringBuilder sb = new StringBuilder();
for(int i=0;i<100;i++){
sb.insert(0, Integer.toString(i));
}
Run Code Online (Sandbox Code Playgroud)
警告: 它违背了目的StringBuilder
,但它完成了你的要求.
更好的技术(虽然仍然不理想):
StringBuilder
.StringBuilder
过程.这将打开一个O(ñ ²)溶液到O(Ñ).
Spe*_*eck 11
也许我错过了一些东西,但你想结束看起来像这样的字符串,对"999897969594...543210"
吗?
StringBuilder sb = new StringBuilder();
for(int i=99;i>=0;i--){
sb.append(String.valueOf(i));
}
Run Code Online (Sandbox Code Playgroud)
作为替代解决方案,您可以使用LIFO结构(如堆栈)来存储所有字符串,并在完成后将它们全部取出并将它们放入StringBuilder中.它自然地反转放置在其中的项目(字符串)的顺序.
Stack<String> textStack = new Stack<String>();
// push the strings to the stack
while(!isReadingTextDone()) {
String text = readText();
textStack.push(text);
}
// pop the strings and add to the text builder
String builder = new StringBuilder();
while (!textStack.empty()) {
builder.append(textStack.pop());
}
// get the final string
String finalText = builder.toString();
Run Code Online (Sandbox Code Playgroud)
这个线程已经很老了,但你也可以考虑一个递归解决方案,传递 StringBuilder 来填充。这允许防止任何反向处理等。只需要用递归设计你的迭代并仔细决定退出条件。
public class Test {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
doRecursive(sb, 100, 0);
System.out.println(sb.toString());
}
public static void doRecursive(StringBuilder sb, int limit, int index) {
if (index < limit) {
doRecursive(sb, limit, index + 1);
sb.append(Integer.toString(index));
}
}
}
Run Code Online (Sandbox Code Playgroud)