目录
一、旋转字符串
题目描述:
给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部,如把字符串“abcdef”前面的2个字符'a'和'b'移动到字符串的尾部,使得原字符串变成字符串“cdefab”。请写一个函数完成此功能,要求对长度为n的字符串操作的时间复杂度为 O(n),空间复杂度为 O(1)。
核心思想:
,这里的转置符号表示翻转的意思
即把一个字符串s拆成X和Y两部分,分别对此进行翻转,最后结果整体翻转,即为想要的结果。在这里之所以用线性代数里的转置符号,是因为整个操作类似于线性代数中这个转置的性质,这样记比较好理解。
关键代码如下:
void ReverseString(char* s,int from,int to)
{
while (from < to)
{
char t = s[from];