H面试程序(4):翻转句子中单词的顺序 .
来源:互联网 发布:电脑上画画的软件 编辑:程序博客网 时间:2024/05/22 23:34
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
#include<stdio.h>#include<assert.h>//45minvoid swap(char *a, char *b){assert(a);assert(b);char temp;temp = *a;*a = *b;*b = temp;}void reverse(char * str,int start,int end){ assert(str);int j = (end-start)/2;for(int i =0; i<=j; i++)swap(&(str[start++]), &(str[end--]));}void ReverceSentence(char * Str){ assert(Str); int i = 0; while(Str[i] !='\0') { i++; } int strlen = i; //得到字符串的长度 //整个字符串进行翻转 reverse(Str,0,strlen-1); //每个单词进行翻转 int j ; for(j = 0; j < strlen-1; j++) //最后一个那个'\0'不用管它 { int start = j;//每个单词的起始位置 int end = j; //每个单词介绍的位置,初始化为j(新单词起始的位置) while(Str[j] != ' '&&Str[j] != '\0' ) //遇到空格或结束符的时候退出,否则继续判断 { end++; j++; } reverse(Str,start, end-1); //对单个字符进行翻转 } }int main(){ char sentence[]="I am a student!"; ReverceSentence(sentence); printf("%s",sentence);printf("\n");return 0;}
网上参考答案
#include <iostream>using namespace std;void Reverse(char *start,char *end) //翻转字符串{ if(start==NULL||end==NULL) return; char temp; while(start<end) { temp=*start; *start=*end; *end=temp; start++; end--; }}char *ReverceSentence(char *pstr){ if(pstr==NULL) return NULL; //先将整个句子翻转 char *start=pstr; char *end=pstr+strlen(pstr)-1; Reverse(start,end); start=pstr; end=pstr; //取出一个个单词,翻转之 while(*start!='\0') { if(*start==' ') //单词起始至非空格字符 { start++; end++; continue; } else if(*end==' '||*end=='\0') //结束至空格或结束符前一个字符 { Reverse(start,--end); start=++end; } else end++; } return pstr;}int main(){ char sentence[]="I am a student!"; char *reverced=ReverceSentence(sentence); cout<<reverced<<endl; system("pause"); return 0;}
/*把给定的字符串的begin到end之间的部分翻转*/void _reverse(char *str, int begin, int end){ int i = 0; while(i <= (end - begin) / 2) { swap(str[begin + i], str[end - i]); ++i; }}
- H面试程序(4):翻转句子中单词的顺序 .
- 面试100题:10.翻转句子中单词的顺序
- 面试经典(1)---翻转句子中单词的顺序
- 面试100题:10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10.翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 10、翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序
- 翻转句子中单词的顺序。
- 泛型通配符?的用法
- 关于一道小学奥数题目
- iOS - 在NSString中显示%号
- Win7和Mac文件共享,分享下经验!
- CMD命令行高级教程精选合编---第六章 if命令讲解[转]
- H面试程序(4):翻转句子中单词的顺序 .
- 网络驱动移植之sk_buff结构体及其相关操作函数(下)
- 袋鼠蹦蹦跳问题
- CMD命令行高级教程精选合编---第七章 DOS编程高级技巧[转]
- 字符串模式匹配
- IRQ line number vs Interrupt vector number
- String实例解析
- Linux中的信号处理原理
- PHP在linux上执行外部命令(整理)