【字符串】句子的反转

题目:将一个句子反转顺序,要求原位操作。例如:“i love c++”--->“c++ love i”。

思路:先把整个字符串进行反转,这样的后果是每个单词内部也被反转,然后再调整单词内部。

"i love c++"--->"++c evol i"--->"c++ love i"

两次反转对应两个函数:allReverse(), wordReverse().

//整个字符串的反转  
void allReverse(char *s) {
	int i = 0, j = strlen(s) - 1;//别忘了减1  
	char tmp;
	while (j > i) {
		tmp = s[i]; 
		s[i++] = s[j]; 
		s[j--] = tmp;
	}
}
 //所有单词反转  
void wordReverse(char *s) {
	int i = 0, begin, end;
	char tmp;
	while (s[i]) {
		//用begin和end卡住一个单词
		if (s[i] != ' ') {
			begin = i;
			while (s[i] && s[i] != ' ') {
				i++;
			}
			i = i - 1;
			end = i;
		}
		//反转该单词
		while (begin<end) {
			tmp = s[begin];
			s[begin++] = s[end]; 
			s[end--] = tmp;
		}
		i++;
	}
}
两个函数组合使用,便可实现句子的反转。


猜你喜欢

转载自blog.csdn.net/sinat_38972110/article/details/80096370