您的位置:首页 > 其它

字符串-07. 说反话-加强版 (20)

2015-02-19 19:49 155 查看
题目来源:

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。

输出格式:每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World   Here I Come

输出样例:
Come I Here World Hello


Java版本:

import java.io.IOException;
import java.text.ParseException;
import java.util.Scanner;

/*
* */
public class Main {

public static void main(String[] args) throws ParseException, IOException {

Scanner scanner = new Scanner(System.in);
//输入一组单词,去除掉前后空格
String str = scanner.nextLine().trim();

//去除掉单词间的空格,可能不只有一个空格,因此用" +"表示至少一个空格
String[] strs = str.split(" +");
for(int i=strs.length-1;i>=0;--i)
{

System.out.print(strs[i]);
if(i!=0)
System.out.print(" ");

//不是最后一个单词,就输出一个空格

}

}
}
结果正确,但是对于部分测试点会超时,因此要用c语言,c语言代码是从网上找的,测试过有效

#include <stdio.h>
#include<string.h>

/*
这道题的出错有两个地方,一是*pp[]的大小设置,要考虑到最极端的情况;
二是当输入为空格的时候,输出是什么??
*/
int main(int argc, char *argv[])
{

char s[500001];
char *p,*pp[250001];
long i=0,j,k;
gets(s);
//printf("%s\n",s);
p=strtok(s," ");
pp[0]=p;
//printf("---%s",p);
i++;
p=strtok(NULL," ");

while(p){
pp[i++]=p;

//printf("----%s",p);
p=strtok(NULL," ");
}
for(j=i-1;j>=0;j--){
if(pp[j]){
if(j==0){
printf("%s",pp[j]);
}else{
printf("%s ",pp[j]);
}
}

}
return 0;
}


scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。

gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。

char string[15]; gets(string); /*遇到回车认为输入结束*/

scanf("%s",string); /*遇到空格认为输入结束*/

函数原型:char *strtok(char *s, char *delim);

函数功能:把字符串s按照字符串delim进行分割,然后返回分割的结果。

函数使用说:

1.strtok函数的实质上的处理是,strtok在s中查找包含在delim中的字符并用NULL(’/0′)来替换,直到找遍整个字符串。这句话有两层含义:(1)每次调用strtok函数只能获得一个分割单位。(2)要获得所有的分割单元必须反复调用strtok函数。

2.strtok函数以后的调用时的需用NULL来替换s.

3.形参s(要分割的字符串)对应的变量应用char s[]=”….”形式,而不能用char *s=”….”形式。

例子如下:

#include <stdio.h>

#include <string.h>

int main(void)

{

char buf[]=”Golden Global View”;

char* token = strtok( buf, " ");

while( token != NULL )

{

printf( ”%s “, token );

token = strtok( NULL, ” “);

}

return 0;

}

其结果为:

Golden

Global

View
参考:
http://blog.csdn.net/js_xj/article/details/5863734 http://blog.csdn.net/js_xj/article/details/5863734
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: