zoukankan      html  css  js  c++  java
  • 5-32 说反话-加强版

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

    输入格式:

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

    输出格式:

    每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。

    输入样例:

    Hello World   Here I Come
    

    输出样例:

    Come I Here World Hello
    

    解题思路:

    先处理字符串,删除多余的空格,形成新字符串。然后逆序输出刚才处理好的字符串,即碰到空格就输出单词。

    解题代码:

    #include<stdio.h>
    #define MAX 500000
    
    int main ()
    {
    	char s;
    	char t[MAX];
    	int i = 0, count = 0, flag = 0;
    	while ((s=getchar()) != '
    ') {
    		if (s != ' ') {
    			flag = 1; //标记遇到单词 
    			t[i++] = s;
    			count = 0;
    		} else if (count > 0) {
    			continue;
    		} else if (flag) {
    			t[i++] = s; //只有之前遇到单词的情况下碰到空格才把这个空格写入目标字符串 
    			count ++;
    		}
    	} //删除多余的空格,将目标字符串放入 t 中 
    	
    	count = 0;
    	int j;
    	for (i-=1; i>=0; i--) {
    		if (t[i] != ' ') {
    			count ++; // 这里的 count 统计的是单词的位数 
    		} else if (t[i]==' ' && count > 0) {
    			for (j=i+1; j<=i+count; j++) {
    				printf("%c", t[j]);
    			} //遇到空格就输出单词 
    			printf(" ");
    			count = 0;
    		}
    	} // 还剩最后一个单词没输出
    	for (j=i+1; j<=i+count; j++) {
    		printf("%c", t[j]);
    	} 
    
    	return 0; 
    }
  • 相关阅读:
    关于MVC与MVP的理解
    使用JDBC连接数据库
    常见DML语句汇总
    java字符常量
    java中Map,List与Set的区别
    面向对象重写(override)与重载(overload)区别
    嵌入式系统的体系结构 图解
    使用webpack + momentjs时, 需要注意的问题
    联想电脑屏幕亮度无法调节
    树形数据构造
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5738608.html
Copyright © 2011-2022 走看看