那么这里是如何思考这个问题以及要记住的。
首先,Java中的String
是不可变的。在String
上进行的所有修改将导致创建新的String
。如果您对很多字符串进行了大量修改,这可能会造成问题,从而导致大量的内存使用量。一定要记住这一点,尤其是当你有更换字符串的循环时。
现在回到问题。给定一个String
,s
,你想“加倍”每一个字符。由于您必须检查s
的每个字符,因此您可能需要一个循环。
你还需要什么?那么,你需要某种结构来构建新的String
。你可以去StringBuilder
或char[]
。 A StringBuilder
就是这样做的:构建字符串。然而,它是以一种高效的方式建立起来的。实际上它包含一个char[]
。
这里的StringBuilder
解决方案:
String input = "hello";
StringBuilder builder = new StringBuilder(input.length() * 2);
for(int i = 0; i < input.length(); i++)
{
builder.append(input.charAt(i)).append(input.charAt(i));
}
String finalString = builder.toString();
这里有一个char[]
解决方案
String input = "hello";
char[] tempChar = new char[input.length() * 2];
for(int i = 0; i < input.length(); i++)
{
tempChar[2 * i] = input.charAt(i);
tempChar[2 * i + 1] = input.charAt(i);
}
String output = new String(tempChar);
什么是 “翻倍” 对你意味着什么? –
对于简短的字符串,字符串的添加并不重要,但是当循环中添加字符而不是插入(预初始化的)'StringBuilder'时,它仍然会伤害我的眼睛。 –
@JamesKPolk谢谢!我不知道我错过了什么,我只是开始编程,循环真的让我困惑。附:爱你的用户名 – Maria