翻转字符串(1)

翻转字符串(1)

题目描述

给定字符类型的数组chas,请在单词间做逆序调整。只要做到单词的顺序逆序即可,对空格的位置没有要求。

输入描述:

输入一行只含字母和空格的字符串,代表 c h a s ( 1 ≤ l e n g t h c h a s ≤ 1 0 5 ) chas(1 \leq length_{chas} \leq 10^5) chas(1lengthchas105)

输出描述:

输出一行字符串,代表逆转顺序后的字符串。

示例1
输入
i am a student
输出
i ma a tneduts
备注:

时间复杂度 O ( n ) O(n) O(n),空间复杂度 O ( 1 ) O(1) O(1)


题解:

从前往后遍历,遇到空格则将前面的字符串翻转输出,否则该字符是字符串中的一员,跳过继续寻找下一个空格。

代码:
#include <stdio.h>
#include <string.h>

const int N = 1e5 + 10;

char s[N];

int main(void) {
    
    
    gets(s);
    int k = 0, i, j;
    for (i = 0; s[i]; ++i) {
    
    
        if (s[i] != ' ') continue;
        for (j = i - 1; j >= k; --j) putchar(s[j]);
        putchar(s[i]);
        k = i + 1;
    }
    if (k < i) for(j = i - 1; j >= k; --j) putchar(s[j]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/MIC10086/article/details/108826258