字符串之移位
1.循环左移
void reverse(char *start,char *end)
{
	
	char temp = '\0';
	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 = '\0';
	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 = '\0';
	while(start <end)
	{
		temp = *start;
		*start = *end;
		*end = temp;
		start++;
		end--;
	}
}
void ReverseSentence(char *str)
{
	char *start = str;
	char *end = str;
	while (*end != '\0')
	{
		if (*end == ' ')
		{
			reverse(start,end -1);
			end++;
			start = end;
		}
		else
		{
			end++;
		}			
	}
	reverse(start,end - 1);
	reverse(str,end-1);
}
    一切源于对计算机的热爱
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号