第四天(双指针)
翻转字符串
344. 反转字符串 - 力扣(LeetCode)
双指针一个指向最左一个指向最右, 进行交换即可=.=(好水的一道题)
void reverseString(char* s, int sSize) { int left = 0; int right = sSize - 1; while(left < right) { int tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } }
反转字符串中的单词 |||
557. 反转字符串中的单词 III - 力扣(LeetCode)
看注释=.=
char * reverseWords(char * s) { int len = strlen(s); int i = 0; while(i<len) { int start = i;//当做开头 while(i < len-1 && s[i+1] != ' ')//len-1防止'\0's[i+1]!=' '是找单词的结尾部分 { i++; } int left = start; int right = i; while(left < right)//反转单词 { int tmp = s[left]; s[left] = s[right]; s[right] = tmp; left++; right--; } i += 2;//因为现在的位置是前单词的后方我们跳两个位置就可以直接跳到下一个单词的第一个位置了. } return s; }