POJ 1002 487-3279

http://poj.org/problem?id=1002
這道題主要是考察字符串的相關操作:替換字符串中的指定字符、刪除字符串中的指定字符、字符串排序、字符串比較。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;

void delchar(char str[], char c)
{
    int i=0, j=0;
    for(i=0;str[i]!='\0';i++)
    {
        if(str[i]=='A' || str[i]=='B' || str[i]=='C')
            str[i]='2';
        else if(str[i]=='D'||str[i]=='E' || str[i]=='F')
            str[i]='3';
        else if(str[i]=='G'||str[i]=='H' || str[i]=='I')
            str[i]='4';
        else if(str[i]=='J'||str[i]=='K' || str[i]=='L')
            str[i]='5';
        else if(str[i]=='M'||str[i]=='N' || str[i]=='O')
            str[i]='6';
        else if(str[i]=='P'||str[i]=='R' || str[i]=='S')
            str[i]='7';
        else if(str[i]=='T'||str[i]=='U' || str[i]=='V')
            str[i]='8';
        else if(str[i]=='W'||str[i]=='X' || str[i]=='Y')
            str[i]='9';
        if(str[i]!=c)
        {
            str[j]=str[i];
            j++;
        }

    }
    str[j]='\0';
}

int compare(const void *i, const void *j)
{
    return strcmp(*(char **)i, *(char(**))j);
}


void unvs(char a[])
{
    int i;
    for(i=6;i>2;i--)
    {
        a[i+1]=a[i];
    }
    a[3]='-';
    a[8]='\0';
}

int iseql(char a[], char b[])
{
    int i;
    for (i=0;a[i]!='\0'&&b[i]!='\0';i++)
    {
        if(a[i]!=b[i])
            return 0;
    }
    return 1;
}


int main()
{
    int i, n;
    scanf("%d", &n);
    char **a = (char **)malloc(sizeof(char *)*n);
    for(i=0;i<n;i++)
    {
        a[i]=(char *)malloc(sizeof(char )* 16);

    }
    for(i=0;i<n;i++)
    {
        scanf("%s",a[i]);
        delchar(a[i],'-');
        //change(a[i]);
    }

    qsort(a, n, sizeof(char *), compare);


    int* cnt = (int*)malloc(sizeof(int)*n);
    cnt[0]=1;
    int j=0;

    for(i=1;i<n;i++)
    {
        cnt[i]=0;
        if(!strcmp(a[i],a[j]))
        {
            cnt[j]++;
        }
        else
        {
            cnt[i]=1;
            j=i;
        }
    }

    for(i=0;i<n;i++)
        unvs(a[i]);

    int num=0;
    for(i=0;i<n;i++)
    {
        if(cnt[i]>1)
        {
            printf("%s %d\n", a[i], cnt[i]);
        }
        else
        {
            num++;
        }
    }
    if(num==n)
        printf("No duplicates. ");

    return 0;
}

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,624評論 18 399
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • LeetCode 刷題隨手記 - 第一部分 前 256 題(非會員),僅算法題,的吐槽 https://leetc...
    蕾娜漢默閱讀 18,367評論 2 36
  • 好久沒有寫什么了,上次其實已經寫成功了,可是由于系統(tǒng)和個人原因,導致沒有保存,然后就一直郁郁寡歡沒有心情了??墒沁@...
    Daisy和她的單程車票閱讀 296評論 3 2
  • 其實寫好已經幾天了,一直沒發(fā),在想究竟要怎么發(fā)呢?今天下早班的我,一個人坐在客廳,發(fā)著呆,想說就現(xiàn)在吧。。然后就打...
    元氣滿滿的學名閱讀 360評論 0 0

友情鏈接更多精彩內容