码迷,mamicode.com
首页 > 其他好文 > 详细

(字符串)句子翻转

时间:2015-05-01 17:21:29      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:

题目:

翻转句子中全部的单词,单词内容不变,例如

I’m a student. ---->student. a I’am

思路:

与前面数组循环移动或翻转是一样的思路。

1、每个单词单独翻转,如m’I a .tneduts

2、翻转整个句子,如student. a I’m

由于这里是全部翻转,所以先单独翻转,后整个翻转和先整个翻转,在单独翻转的效果是一样的。

代码:

#include <iostream>

using namespace std;

void reverse(string &str,int start,int end){
    char tmp;
    int i=start;
    int j=end;
    while(i<j){
        tmp=str[i];
        str[i]=str[j];
        str[j]=tmp;
        i++;
        j--;
    }
}

void reverse_sentence(string &str){
    int len=str.length();
    int start=0;
    int index=0;
    while(index<len){
        while(str[index]!=  && index<len)
            index++;
        reverse(str,start,index-1);
        while(str[index]==  && index<len)
            index++;
        start=index;
    }
    reverse(str,0,len-1);
}

int main()
{
    string str="I‘m a student!";
//    cout<<str.length()<<endl; //15
//    cout<<sizeof(str)<<endl;  //4
    reverse_sentence(str);
    cout<<str<<endl;
    return 0;
}

 

运行结果:

技术分享

(字符串)句子翻转

标签:

原文地址:http://www.cnblogs.com/AndyJee/p/4470821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!