题意

给定字符串, 输出其反向字符串

方法

反向并输出

直接使用C++的reverse函数,对字符串反向.

再将该字符串输出即可

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    char s[10010];
    while( cin.getline(s,10000,'\n')){ // 读入
        reverse(s,s+strlen(s)); // 反向
        printf("%s\n",s); // 输出
    }
    return 0;
}

复杂度分析

时间复杂度: 读入,反向和输出,都是和字符串长度相关,所以时间复杂度为O(n)O(n)

空间复杂度: 主要在字符串的存储,所以空间复杂度为O(n)O(n)

不操作字符串,改变输出遍历顺序

以样例数据I am a student为例

字符串 I a m a s t u d e n t
正向下标 0 1 2 3 4 5 6 7 8 9 10 11 12 13
反向下标 13 12 11 10 9 8 7 6 5 4 3 2 1 0

其正向下标 反过来,就是反向下标.

因为题目只检查输出,不会检查内存内容,所以我们控制输出的遍历顺序即可,而不需要操作字符串.

代码

#include<bits/stdc++.h>
using namespace std;
int main(){
    char s[10010];
    while( cin.getline(s,10000,'\n')){
        int n = strlen(s); // 只获取长度 不操作字符串
        for(int i =n-1;i>=0;i--){ // 控制遍历顺序为反向
            printf("%c",s[i]);
        }
        printf("\n",s);
    }
    return 0;
}

复杂度分析

时间复杂度: 读入和输出,都是和字符串长度相关,所以时间复杂度为O(n)O(n)

空间复杂度: 主要在字符串的存储,所以空间复杂度为O(n)O(n)