zoukankan      html  css  js  c++  java
  • 1009. 说反话 (20)

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

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

    输出格式:每个测试用例的输出占一行,输出倒序后的句子。

    输入样例:

    Hello World Here I Come
    

    输出样例:

    Come I Here World Hello

    思路:C语言写的,回头再用Java重写一次,由于没有特殊的集成函数只能使用char[]来操作,主要思想是记录分隔符在字符数组str[]中的位置,将其Index记录在int[cnt++] arr中,计数变量cnt在for循环中可以实现每个单词的打印输出;
    需要注意的是:在仅仅有一个单词的时候,要使arr[0] = str.length;
     1 #include<stdio.h>
     2 #include<string.h>
     3 
     4 int main()
     5 {
     6     int arr[80] = {0};
     7     char str[80];
     8     gets(str);
     9     int length = strlen(str);
    10     int cnt = 0;
    11     for(int i=0; i<length; i++)//记下字符串中空格的原始下标 
    12     {
    13         if(str[i]== ' ')
    14             arr[cnt++] = i; 
    15     }
    16     if(cnt == 0) arr[0] = length;
    17 //    for(int i=0; i<cnt; i++)
    18 //    printf("%d ",arr[i]);
    19 
    20     int endIndex = length;
    21     for(int i=cnt-1; i>=0; i--)
    22     {
    23         for(int j=arr[i]+1; j<endIndex; j++)
    24         {
    25             if(j!=endIndex-1)
    26             printf("%c",str[j]);
    27             else
    28             printf("%c ",str[j]); 
    29         }
    30         endIndex = arr[i];
    31     }
    32     for(int i=0; i<arr[0]; i++)
    33         printf("%c",str[i]);
    34     
    35     return 0;
    36  } 
  • 相关阅读:
    聚类算法优秀博客链接
    读安晓辉老师的访谈有感
    机器学习概览之常见算法汇总
    稀疏表达和压缩感知的一些对比
    [Linked List]Reverse Linked List,Reverse Linked List II
    [Linked List]Palindrome Linked List
    [Linked List]Remove Nth Node From End of List
    [Tree]Binary Tree Inorder Traversal
    [Tree]Binary Tree Preorder Traversal
    [stack]Evaluate Reverse Polish Notation
  • 原文地址:https://www.cnblogs.com/valar/p/6151794.html
Copyright © 2011-2022 走看看