题解 | #明明的随机数#C 滑动窗口 字符串
字符串变形
http://www.nowcoder.com/practice/c3120c1c1bc44ad986259c0cf0f0b80e
具体思路就是两次翻转,然后滑动窗口取单词在进行翻转。
*
* @param s string字符串
* @param n int整型
* @return string字符串
*
* C语言声明定义全局变量请加上static,防止重复定义
*/
void revers(char* s, int left, int right) {
while (left < right) {
s[left] = s[left] + s[right];
s[right] = s[left] - s[right];
s[left] = s[left] - s[right];
left++;
right--;
}
}
void change_Aa(char* s) {
int n = strlen(s);
for (int i = 0; i < n; i++) {
if (s[i] <= 'z' && s[i] >= 'a') {
s[i] -= 32;
continue;
}
if (s[i] <= 'Z' && s[i] >= 'A') {
s[i] += 32;
continue;
}
}
}
char* trans(char* s, int n ) {
// write code here
revers(s, 0, n - 1); //整个字符串翻转
int i = 0, j = 0, k = 0;
while (j < n) {
if (s[j] == ' ' || j == n - 1) { //每个单词进行翻转
k = j == n - 1 ? n - 1 : j - 1;
revers(s, i, k);
i = j + 1;
}
j++;
}
change_Aa(s);
return s;
}