zoukankan      html  css  js  c++  java
  • ACM-古老的密码(排序qsort)

    古老的密码

    题目描述:

    给定两个长度一样且不超过100的字符串,判断是否能把其中一个字符串的各个字母重排,之后对26个字母做一个一一映射,使得两个字符串相同

    例如,JWPUDJSTVP重排后可以得到WJDUPSJPVT,之后把每个字母映射到它的前面一个字母,得到VICTORIOUS,输入两个字符串,输出YES或者NO

    题目分析:

    因为字母可以重排映射(不一定往前映射),所以每个字母的位置并不重要,重要的是每个字母出现的次数

    ①统计两个字符串每个字母出现的次数,得到两个数组cnt1[26],cnt2[26]

    ②之后我们排序下,排序之后结果相同,映射的字符就相同

     

    代码:

     

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 #include <string.h>
     4 #define maxn 101 
     5 
     6 int cmp(const void *a, const void *b)
     7 {
     8     return *(int *)a - *(int *)b;//从小到大排序 
     9 }
    10 /* 
    11 int cmp(const void *a, const void *b)
    12 {
    13     return *(int *)b- *(int *)a;//从大到小排序 
    14 }
    15 */ 
    16 int main()
    17 {
    18     char a[maxn];
    19     char b[maxn];
    20     while(scanf("%s%s",&a,&b) != EOF)
    21     {
    22         int len = strlen(a);
    23         int cnt1[26],cnt2[26];
    24         memset(cnt1,0,sizeof(cnt1));
    25         memset(cnt2,0,sizeof(cnt2));
    26 
    27         for(int i=0; i < len; i++)
    28         {
    29             cnt1[a[i] - 'A']++; //A-0 B-1..... 
    30             cnt2[b[i] - 'A']++;
    31         }
    32 
    33         //排序
    34         qsort(cnt1,26,sizeof(cnt1[0]),cmp);//qsort快速排序 
    35         qsort(cnt2,26,sizeof(cnt2[0]),cmp);
    36 
    37         for(int i=0; i < 26; i++)
    38         {
    39             if(cnt1[i] != cnt2[i])
    40             {
    41                 printf("NO
    ");
    42                 return 0;
    43             }
    44         }
    45         printf("YES
    ");
    46     }
    47 
    48     return 0;
    49 }

     

     

  • 相关阅读:
    Android开发之《内存对齐》
    Android开发之《libyuv库的使用》
    Android开发之《ffmpeg解码mjpeg视频流》
    Android开发之《USB Camera》
    Cenos配置Android集成化环境, 最终Centos libc库版本过低放弃
    (警告)不要轻易删除libc.so.6,以及误删恢复
    Android开发之《硬件加速》
    EPANET中的typedef使用
    面试
    NSString copy && strong
  • 原文地址:https://www.cnblogs.com/qiujun/p/6061401.html
Copyright © 2011-2022 走看看