微软面试百题009——按词反转句子
来源:互联网 发布:怎样做网络主播 编辑:程序博客网 时间:2024/06/02 04:50
1.问题描述:
翻转句子中单词的顺序。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
2.解法:
栈
我们先将句子的内容保存下来,然后开辟一个栈,以单词为单位不断的pop出,这是最好考虑也是最噶小的做法了:
附上代码:
#include"iostream"#include"cstdio"#include"cstdlib"#include"cstring"#define N 100using namespace std;class sentence{public:sentence(){memset(juzi,0,sizeof(juzi));memset(result,0,sizeof(result));num=numr=0;}void set(){printf("请输入:\n");for(int i=0;;i++){scanf("%c",&juzi[i]);if(juzi[i]=='.') {num=i-1;break;}}getchar();}void pop(){int i;while(num>=0){int k=num;for(i=num;i>=0;i--) if(juzi[i]==' ') break; for(int j=i+1;j<=k;numr++,j++,num--) result[numr]=juzi[j]; for(int j=i;juzi[j]==' ';j--,numr++,num--) result[numr]=juzi[j]; //连续空格复制的操作 }}void print(){for(int i=0;i<strlen(result);i++) printf("%c",result[i]);cout<<'.'<<endl;}private:char juzi[N];char result[N];int num; //兼具了栈的top成员的任务 int numr;};int main(){sentence my;my.set();my.print();my.pop();my.print();return 0;}
1 0
- 微软面试百题009——按词反转句子
- 微软,Google面试题 (7) —— 反转句子中单词的顺序
- 微软面试100题---单链表就地反转
- 微软面试100题系列---二叉查找树的反转
- 句子反转
- 反转句子
- 句子反转
- 句子反转
- 句子反转
- 句子反转
- 反转句子
- 翻转句子中单词的顺序 【微软面试100题 第十题】
- 微软面试题——反转字符串
- 微软面试百题006——八皇后变种
- 微软面试百题007——链表相交
- 微软面试百题011——找数
- 微软面试100题—自做
- 每日一题2:反转英文句子
- JavaScript作用域链及案例详解
- Design包下NavigationView的使用
- 【linux】浅谈Linux下的gcc编译器和"Makefile"文件
- UVA11945 Financial Management
- Linux安装tomcat7
- 微软面试百题009——按词反转句子
- 绝对定位的图 说明初始包含块是viewport 而不是body/html
- 欢迎使用CSDN-markdown编辑器
- 转:JavaScript函数和对象的关系
- [centos]install python3.5 in centos
- Android中那些让你相见恨晚的类-接口-方法
- CentOS7中rpm,yum软件安装命令
- 操作系统常用算法
- Scala入门之提取器