• 成长轨迹50 【ACM算法之路 百炼poj.grids.cn】【字符串处理】【2974:4873279】


    题目http://poj.grids.cn/practice/2974

    【ac代码】

     1 //先处理字符串,然后为了找重复个数简单些,注意先排序
    2 //再找出最前和最后一个相同的号码,下标相减即可
    3 //看书后,使用系统函数qsort()——要补充函数compare()
    4 //后面部分小心处理数组越界问题。。。
    5 #include <stdio.h>
    6 #include <string.h>
    7 #include <stdlib.h>
    8
    9 char num[100020][10];
    10 int map[26]={2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,0,7,7,8,8,8,9,9,9};//【Q没有对应!】
    11
    12 int compare(const void * item1,const void * item2)
    13 {
    14 return (strcmp((char*)item1,(char*)item2));
    15 }
    16
    17 int main()
    18 {
    19 int n;
    20 scanf("%d",&n);
    21 for(int i=0;i<n;i++)
    22 {
    23 char temp[80];//【以防万一,改大些。。】
    24 scanf("%s",temp);
    25 //int len=strlen(temp);
    26 int k=0;
    27 for(int j=0;k<8;j++)//【注意只有7位数字+1位符号】
    28 {
    29 if(temp[j]=='-')
    30 continue;
    31 if(k==3)
    32 {
    33 num[i][k++]='-';//【这里不能continue!】
    34 }
    35 if(temp[j]>='A'&&temp[j]<='Z')
    36 num[i][k++]=char(map[temp[j]-'A']+'0');
    37 else
    38 num[i][k++]=temp[j];
    39 }
    40 num[i][k]='\0';//【这里要有结束符】
    41
    42 }
    43 qsort(num,n,10,compare);
    44
    45
    46 bool Noduplicates = true;
    47 for(int j=0,k=0;j<n;)
    48 {
    49 k=j;
    50 j++;
    51 while(j<n && strcmp(num[k],num[j])==0)//【注意是判断j<n而非k<n】
    52 {
    53 j++;
    54 }
    55 if(j-k>1)//【是j-k不是k-j。。。】
    56 {
    57 printf("%s %d\n",num[k],j-k);
    58 Noduplicates = false;
    59 }
    60 }
    61 if(Noduplicates)
    62 printf("No duplicates.\n");
    63 return 0;
    64 }
  • 相关阅读:
    百度浏览器 h5页面fixed布局不显示问题
    Vue3_arco.design icon 组件批量渲染
    异步加载数据的 js tree (基于Jquery)
    ASP.NET MVC 与 WebForm 对比
    asp.net 页面生命周期
    ASP.NET通过OLE DB操作Excel
    SQL 分页查询的几种方式
    OLEDB读取Excel文件丢失部分数据
    MVC 基于FormsAuthentication 方式的权限验证
    Session不超时
  • 原文地址:https://www.cnblogs.com/zeedmood/p/2356841.html
Copyright © 2020-2023  润新知