zoukankan      html  css  js  c++  java
  • 华为机试再回忆--第三题

    题目:字符串比较排序

    描述:1.字符串由大小写字母,数字及空格组成,一个或者多个空格将多个字符串隔开

           2.解析出各字符串

           3.输出结果时,将各个子串按长度从大到小排序,如果长度一样,按照小写字母>大写字母>数字 进行排序

           4.输出结果时,一个空格隔多个子串

    样例输入:w23r  at 1rt  Af w13r

    样例输出:w13r w23r 1rt at Af

    本题几个注意的地方:

    1.输入用getline才能输入空格

    2.字符串解析出来后,用一个辅助数组保存各个字符串长度然后再使用辅助串长度对字符串进行交换

    3.由于长度一样的时候按照小写字母>大写字母>数字排序,正好可使用strcmp

    代码实现如下:

      1 #include <iostream>
      2 #include <string>
      3 using namespace std;
      4 
      5 #define  StrSize 100
      6 
      7 int main()
      8 {
      9 
     10     string OriginalStr;
     11     getline(cin,OriginalStr);
     12 
     13 
     14 
     15     int index=0;
     16     int j=0;
     17     int count=0;
     18     while(true)
     19     {
     20         if(OriginalStr[index]!=' ')
     21         {
     22             j++;
     23             index++;
     24         }
     25         else
     26         {
     27             index++;
     28             j=0;
     29         }
     30 
     31         if(OriginalStr[index-1]==' '&&OriginalStr[index]!=' ')
     32         {
     33             count++;
     34         }
     35 
     36         if(index>=OriginalStr.length())
     37             break;
     38     }
     39 
     40     count=count+1;
     41 
     42     char **StrArray=new char *[count];
     43     for(int i=0;i<count;i++)
     44     {
     45         StrArray[i]=new char[StrSize];
     46     }
     47 
     48     for(int i=0;i<count;i++)
     49         for(int j=0;j<StrSize;j++)
     50             StrArray[i][j]='';
     51 
     52     index=0;
     53     j=0;
     54     int k=0;
     55     while(true)
     56     {
     57         if(OriginalStr[index]!=' ')
     58         {
     59             StrArray[k][j++]=OriginalStr[index++];
     60         }
     61         else
     62         {
     63             index++;
     64             j=0;
     65         }
     66 
     67         if(OriginalStr[index-1]==' '&&OriginalStr[index]!=' ')
     68         {
     69             k++;
     70         }
     71 
     72         if(index>=OriginalStr.length())
     73             break;
     74     }
     75 
     76     int *LenArr=new int[count];
     77     for(int i=0;i<count;i++)
     78     {
     79         LenArr[i]=strlen(StrArray[i]);
     80     }
     81 
     82     for(int i=0;i<count;i++)
     83     {
     84         for(int j=i;j<count;j++)
     85             if(LenArr[i]<LenArr[j])
     86             {
     87                 char *temp;
     88                 temp=StrArray[i];
     89                 StrArray[i]=StrArray[j];
     90                 StrArray[j]=temp;
     91 
     92                 int tempint;
     93                 tempint=LenArr[i];
     94                 LenArr[i]=LenArr[j];
     95                 LenArr[j]=tempint;
     96             }
     97     }
     98 
     99 
    100     for(int i=0;i<count-1;i++)
    101     {
    102         if(LenArr[i]==LenArr[i+1])
    103         {
    104             if(strcmp(StrArray[i],StrArray[i+1])<0)
    105             {
    106                 char *temp;
    107                 temp=StrArray[i];
    108                 StrArray[i]=StrArray[j];
    109                 StrArray[j]=temp;
    110             }
    111         }
    112     }
    113 
    114 
    115     for(int i=0;i<count;i++)
    116     {
    117         cout<<StrArray[i]<<" ";
    118     }
    119     cout<<endl;
    120 
    121     for(int i=0;i<count;i++)
    122     {
    123         delete[] StrArray[i];
    124     }
    125     delete[] StrArray;
    126     StrArray=NULL;
    127     system("pause");
    128     return 0;
    129 }

    运行截图:

  • 相关阅读:
    阻塞队列之LinkedTransferQueue
    BlockingQueue drainTo()
    jedis常用API
    在Redis集群中使用pipeline批量插入
    序列化
    springmvc单文件上传
    hibernateValidate
    springmvc使用spring自带日期类型验证
    springmvc自定义日期编辑器
    springmvc__SimpleUrlHandlerMapping(对访问地址进行加工,以键值对的形式)
  • 原文地址:https://www.cnblogs.com/vpoet/p/4755873.html
Copyright © 2011-2022 走看看