无聊期间想起了一道字符串反转的问题。 大致要求输入“I am a good boy”,输出"boy good a am I"。 要求不能用已经封装好的方法实现。于是乎,我上网查了一下,基本都是用了封装后类库。于是我自己写了一个小算法,低时间复杂度高空间复杂度的算法。
private string Revert(string str)
{
if (str.Length == 0)
{
return string.Empty;
}
string newStr = null;
int indexFirst = -1;
int indexLast = str.Length - 1;
for (int i = str.Length - 1; i >= 0; i--)
{
if (str[i] == ' ')
{
indexFirst = i + 1;
while (indexLast - indexFirst >= 0)
{
newStr += str[indexFirst];
++indexFirst;
}
newStr = newStr + ' ';
indexLast = i - 1;
indexFirst = -1;
}
if (i == 0)
{
indexFirst = i;
while (indexLast - indexFirst >= 0)
{
newStr += str[indexFirst];
++indexFirst;
}
}
}
return newStr;
}