字符串之移位

1.循环左移

void reverse(char *start,char *end)
{
	
	char temp = '';
	while(start <end)
	{
		temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}

}


int main()
{
	char str[] = "abcdefghi";
	int m = 3;
	reverse(str,str + m -1);
	reverse(str +m,str + strlen(str) - 1);
	reverse(str,str + strlen(str) - 1);
	cout << str <<endl;
   
	return 0;
}

2.字符串转置,是循环移动的一种特殊情况

void reverse(char *str)
{
	int length = strlen(str);
	char *start = str; 
	char *end= str + length -1;
	char temp = '';
	while(start <end)
	{
		temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}

}

3.移动包含问题

字符串str1是否可以通过移动得到str2,只需要通过判断str2是否在str1str1中即可。

4.字符串单词翻转

"I am from Wuhan." -> "Wuhan. from am I"

void reverse(char *start,char *end)
{
	
	char temp = '';
	while(start <end)
	{
		temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}

}

void ReverseSentence(char *str)
{
	char *start = str;
	char *end = str;
	while (*end != '')
	{
		if (*end == ' ')
		{
			reverse(start,end -1);
			end++;
			start = end;
		}
		else
		{
			end++;
		}			
	}
	reverse(start,end - 1);
	reverse(str,end-1);
}
原文地址:https://www.cnblogs.com/liuweilinlin/p/3281328.html