Входные данные: «Меня зовут Притам». Выходные данные: «Притамов зовут Меня».
Я уже писал об этом, но меня немного смущает сложность времени
public string ReverseWordsInAString(string str)
{
char[] temp = str.ToCharArray();
int startIndex = 0;
int endIndex = str.Length - 1;
temp = ReverseString(temp, startIndex, endIndex);
endIndex = 0;
foreach (char c in temp)
{
if(c == ' ')
{
temp = ReverseString(temp, startIndex, endIndex-1);
startIndex = endIndex + 1;
}
if (endIndex == str.Length-1)
{
temp = ReverseString(temp, startIndex, endIndex);
}
endIndex++;
}
str = new string(temp);
return str;
}
public char[] ReverseString(char[] chr, int start, int end)
{
while (start < end)
{
char temp = chr[start];
chr[start] = chr[end];
chr[end] = temp;
start++;
end--;
}
return chr;
}
Когда я вызываю метод ReverseString из цикла for, я думаю, что это больше не решение O (n).Пожалуйста, поправьте меня, если я ошибаюсь.У кого-нибудь есть лучшее решение.