我想像下面那样扩展字符串,但不使用额外的空间..
a5b1c0d5a1a1
结果应该是..
aaaaabaa
我被困在这里。怎么做没有额外的空间?
答案 0 :(得分:1)
我会读取每个字符,检查是字母,而不是取下一个字符,检查它是否为数字,而不仅仅是将结果字符串添加到字母时间。
在你的例子中,我要读的第一件事是a,a是一个字母,所以读下一个,检查它是否是一个数字,它是。所以附加到一个结果字符串五个a。
例如,使用循环时间来附加字母。
<强>更新强>
更好地解释我的评论。
所以你循环遍历字符串。
索引0你有'a'。所以你读了一封信,然后你希望得到一个数字,即5。
我现在将字符串分成其他字符串。第一个将拥有一切,直到a,在这种情况下只有一个。
第二个将包含数字之后的所有内容,在本例中为5,这将是b1c0d5a1a1
所以取第一个字符串,与4连接(5-1,你已经有第一个a)然后与字符串的其余部分连接。
string = b1c0d5a1a1
string = substring(0,1) + "aaaa" + substring(1,stringsize-1);
在像0这样的情况下,您可以使用子字符串索引,这样您就可以删除字母,而不是添加更多字母。