非专业程序员

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

#include <iostream>
#include <vector>
#include <list>
#include <string>
#include <algorithm>

using namespace std;

int main(int argc,char **argv)
{
 string line1="We were her pride of 10 she named us: ";
 string line2="Benjamin, phoenix, the prodigal";
 string line3="and perspicacious pacific suzanne";

 string sentence=line1+' '+line2+' '+line3;

 char cr=' ';
 string::size_type pos=0;
 string::size_type length=0;
 string::size_type maxlength=0;
 string::size_type minlength=0;
 string::size_type wordbeg=0;
 string::size_type wordend=0;

 string longword;
 string shortword;
 vector<string> vec;


 while((pos=sentence.find_first_of(cr,pos))!=string::npos )
 {
  
  if(wordbeg==pos)   //排除如果有两个空格相联的情况
  {
   ++pos;
   wordbeg=pos+1;
   continue;
  }
  wordend=pos;
  length=wordend-wordbeg;
  vec.push_back(sentence.substr(wordbeg,length));
  wordbeg=pos+1;
  ++pos;
 }

 vec.push_back(sentence.substr(wordbeg)); //在容器里面加上最后一个单词

 //最短的单词要初始化,否则与0比较总是失败
 minlength=(*vec.begin()).size();
 shortword=*vec.begin();

 for(vector<string>::iterator iter=vec.begin();
  iter!=vec.end();++iter)
 {
  if(iter->size()>maxlength)
  {
   maxlength=iter->size();
   //longword=*iter;
  }

  if(iter->size()<minlength)
  {
   minlength=iter->size();
   //shortword=*iter;
  }
 }

 shortword="";
 
 for(vector<string>::iterator iter=vec.begin();
  iter!=vec.end();++iter)
 {
  if(iter->size()==maxlength)
  {
   longword=longword+' '+*iter;
  }

  if(iter->size()==minlength)
  {
   shortword=shortword +' '+*iter;
  }
 }
 

  
 cout<<"题目要求字符串:"<<endl<<sentence<<endl;

 cout<<"最长的单词字数:"<<maxlength
  <<" 单词是:"<<longword<<endl;

  cout<<"最短的单词字数:"<<minlength
  <<" 单词是:"<<shortword<<endl;

 cout<<"单词总数为:"<<vec.size()<<endl;

 


 return 0;

}

posted on 2008-11-27 22:21  曲仁岗  阅读(210)  评论(0编辑  收藏  举报