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; 
    }
  • 相关阅读:
    android 使用adb重新建立 eclipse和模拟器间的连接
    android ADB server didn't ACK
    Android getSystemService()
    Android隐藏标题栏
    Android 与WCF REST 服务联调
    Eclipase 无法启动,启动界面显示完版本号之后无响应
    调用WCF REST服务时,使用JSON
    org.apache.http.conn.HttpHostConnectException: Connection to refused
    SqlServer跨域查询
    ASP.net导出Excel的几种方式
  • 原文地址:https://www.cnblogs.com/andywenzhi/p/5738608.html
Copyright © 2011-2022 走看看