字符串反转 和 字符逆序

题目

描述

写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。

输入

输入N个字符

输出

输出该字符串反转后的字符串

样例输入

abcd

样例输出

dcba

思路

  1. 存数组,倒着输出
  2. 交换收尾顺序

注意!!!!
这个代码可以处理含有空格的字符串,所以这两道题的解法是一样的。

代码

#include 
#include 
using namespace std;

//交换元素
void swap(char &a, char &b)
{
    a = a^b;
    b = a^b;
    a = a^b;
}

void reverse2(char *s)
{
    int n = strlen(s);
    for(int i=0; i2; ++i)
    {
        swap(s[i], s[n-i-1]);
    }
}

void reverse1(char *s)
{
    if(!s) return;
    char *p = s, *q = s;
    while(*q)
    {
        ++q;
    }
    --q;//找到最后一个字符,减一
    while(p < q)
    {
        swap(*p++, *q--);
    }
}

int main()
{
    string str;
    getline(cin,str);//如果不用getline, cin会导致输入空格时结束
    char* s=const_cast<char * >(str.c_str());
    reverse1(s);
    cout<return 0;
}

字符串反转 和 字符逆序_第1张图片

看了这么多代码,是不是比较费劲。。。其实倒着输出也可以的。。。

#include 
#include 

using namespace std;
int main(void)
{
    string str;
    getline(cin,str);//获取字符串
    for(string::reverse_iterator iter =str.rbegin(); iter!=str.rend(); ++iter)
    {
        cout<<*iter;//从最后开始循环输出
    }
    cout<return 0;
}

字符串反转 和 字符逆序_第2张图片

你可能感兴趣的:(那些年我写过的渣代码)