H面试程序(4):翻转句子中单词的顺序 .
题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。
句子中单词以空格符隔开。为简单起见,标点符号和普通字母一样处理。
例如输入“I am a student.”,则输出“student. a am I”。
#include<stdio.h>
#include<assert.h>
//45min
void 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):翻转句子中单词的顺序 .的更多相关文章
- 翻转句子中单词的顺序 C语言
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开. 为简单起见,标点符号和普通字母一样处理. 比如将"I am a student"转化为&q ...
- 7.翻转句子中单词的顺序[ReverseWordOrderInSentence]
[题目] 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“I am a student.”,则输出“stud ...
- IT公司100题-10-翻转句子中单词的顺序
问题描述: 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变. 句子中单词以空格符隔开.为简单起见,标点符号和普通字母一样处理. 例如输入“Hello world!”,则输出“world ...
- 【c++】计算句子中单词的平均长度
Description 编程输入一行文本,计算这行文本的单词平均长度.假设每个单词用至少一个空格或者标点(英文逗号.句号)隔开.使用C++ string类型. Input 输入一行文本,不包含数字 O ...
- OpenJudge计算概论-单词倒排【把句子内单词的顺序翻转】
/*================================================== 单词倒排 总时间限制: 1000ms 内存限制: 65536kB 描述 编写程序,读入一段英文 ...
- H面试程序(12): 输出字符串中第一个只出现一次的字母
题目描述: 若字符串str为'' sbdddsbfc'',则输出 f; 若字符串str为''aabbccdd'',则输出:字符串str中的字符都出现两次以上 #include <stdio.h& ...
- 557. Reverse Words in a String III 翻转句子中的每一个单词
[抄题]: Given a string, you need to reverse the order of characters in each word within a sentence whi ...
- H面试程序(28):字符串处理转换
//2 字符串处理转换 //问题描述: //在给定字符串中找出单词( “单词”由大写字母和小写字母字符构成, //其他非字母字符视为单词的间隔,如空格.问号.数字等等:另外单个字母不算单词): //找 ...
- (C#) 反转字符串,反转一个句子中单词。
这个是非常基本的一道面试题,但是要考虑周全. 首先反转一个字符串: 基本思路是变成Char数组,然后调用C#里面的方法,或者设定两个index,从头,尾向中间遍历,并交换. 方法一: Array.Re ...
随机推荐
- JS - 按钮倒计时
效果: html代码: <input type="button" id="btn" value="点击获取效验码" /> js代 ...
- 变相的取消Datagridview控件的选中状态
思路:把每一列的文字颜色设为黑色,选中时候的背景为白色,颜色为黑色.每一列都这样设置,那么变相的达到了取消选中效果. 图:
- webform--常用的控件
一.简单控件 1.Lable——标签:在网页中呈现出来的时候会变成span标签 属性:Text——标签上的文字 BackColor,ForeColor——背景色,前景色 Font——字体 Bold- ...
- saltstack:使用教程之二高级模块用法Grains、Pillar
1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...
- 分享非常有用的Java程序 (关键代码) (二)---列出文件和目录
原文:分享非常有用的Java程序 (关键代码) (二)---列出文件和目录 File dir = new File("directoryName"); String[] child ...
- Navicat连接oracle,出现Only compatible with oci version 8.1 and&nb
与本地oracle连接的时候,一般没问题.sqlplus和oci都是本地oracle自带的.(设置: 工具->选项->oci) 分别为: oci:D:\app\pcman\produc ...
- Outlook Express 收发邮件出现"0x800CCC0F"错误代码解决方法
非常多网友在使用Outlook Express收发邮件的过程中,有时能够发送邮件,但出现不能接收信件的问题.每次在收邮件都会在某个地方停止不动,然后报超时,出现错误代码0x800CCC19或0x800 ...
- 【linux驱动】linux驱动总览
欢迎转载,转载时需保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...
- 互联网组织的未来:剖析GitHub员工的任性之源(转)
如果有这么家任性的公司,没有所谓“经理人”这一层,人都在做自己喜欢的事情,并且创造价值,而其他的事情,就顺其自然让他发生.这里能节省多少官僚主义带来的浪费?这样的公司得跑得有多快?得有多少无谓的冲突消 ...
- ORA-01092 ORA-12432: LBAC error: zllegnp:OCIStmtExecute 故障一例
最近由于数据库hang住,无奈之下直接干掉了pmon进程,再次启动的时候收到了ORA-01092: ORACLE instance terminated. Disconnection forced以及 ...