句子翻转 如i am superman ---> superman am i

 句子翻转

i am superman ---> superman am i

 

这个题目比较简单:

思路:

(1)首先将原字符串分开成单词,然后将单词在反过来组成反的字符串;

函数如下:

 

#include "stdafx.h"
#include "stdlib.h"


#include <string>

#include <list>

using namespace std;

 

bool InverseString(const std::string StrSrc,std::string &StrDsc)
{
 
 list<string> SubString;
 list<string>::iterator iter;

 int ibegin=0,iend=0;

 //如果为NULL
 if (StrSrc.empty())
 {
  return false;
 }
 
 //分别取出每一个子单词字符串
 for (unsigned int i=0;i<StrSrc.size();i++)
 {
  //是空格
  if (StrSrc[i]==0x20)
  {
   iend=i;
  }

  //是一个合法的子字符串
  if ((iend-ibegin)>0)
  {
   std::string TmpStr=StrSrc.substr(ibegin,iend-ibegin);

   SubString.push_front(TmpStr);

   ibegin=i;
  }
 }

 

//最后一个单词串

 std::string TmpStr=StrSrc.substr(ibegin);

 SubString.push_front(TmpStr);

 for(iter=SubString.begin();iter!=SubString.end();iter++)
 {

  StrDsc.append(*iter);
  //补上空格
  StrDsc.append(" ");

 }

 return true;
}


int main(void)
{
 string StrSrc="i am superman";
 std::string StrDesc="";

 InverseString(StrSrc,StrDesc);

 printf("desc string is:%s\n",StrDesc.c_str());

}

 

 以上是我的解法,如果大家有更好的算法,也麻烦告诉我,呵呵!我写的这个函数没有考虑原字符串中有多个空格隔开的情况!

你可能感兴趣的:(招聘)