首页 > 试题广场 >

翻转字符串(1)

[编程题]翻转字符串(1)
  • 热度指数:3107 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定字符类型的数组chas,请在单词间做逆序调整。只要做到单词的顺序逆序即可,对空格的位置没有要求。

输入描述:
输入一行只含字母和空格的字符串,代表chas


输出描述:
输出一行字符串,代表逆转顺序后的字符串。
示例1

输入

i am a student

输出

i ma a tneduts

备注:
时间复杂度,空间复杂度
#include <stdio.h>
#include <string.h>

#define MAXLEN 100005

void reverse(char *str, int start, int end);

int main(void) {
    char str[MAXLEN];
    int len;
    fgets(str, MAXLEN, stdin);
    len = strlen(str);
    str[--len] = '\0';
    for (int i = 0; i < len; i++) {
        int j;
        for (j = i; j < len && str[j] != ' '; j++)
            ;
        reverse(str, i, j - 1);
        i = j;
    }
    puts(str);
    return 0;
}

void reverse(char *str, int start, int end) {
    char t;
    while (start < end) {
        t = str[start];
        str[start] = str[end];
        str[end] = t;
        start++;
        end--;
    }
}

发表于 2022-02-06 19:30:37 回复(0)

问题信息

上传者:小小
难度:
2条回答 6907浏览

热门推荐

通过挑战的用户

查看代码
翻转字符串(1)