zoukankan      html  css  js  c++  java
  • 51nod 1095 Anigram单词


    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
     收藏
     关注
    一个单词a如果通过交换单词中字母的顺序可以得到另外的单词b,那么定义b是a的Anigram,例如单词army和mary互为Anigram。现在给定一个字典,输入Q个单词,从给出的字典中找出这些单词的Anigram。
    Input
    第1行:1个数N,表示字典中单词的数量。(1 <= N <= 10000)
    第2 - N + 1行,字典中的单词,单词长度 <= 10。
    第N + 2行:查询的数量Q。(1 <= Q <= 10000)
    第N + 3 - N + Q - 2行:用作查询的单词,单词长度 <= 10。
    Output
    共Q行,输出Anigram的数量,相同的2个单词不算Anigram,如果没有输出0。
    Input示例
    5
    add
    dad
    bad
    cad
    did
    3
    add
    cac
    dda
    
    Output示例
    1
    0
    2


    #include <bits/stdc++.h>
    using namespace std;
    char a[100];
    char *f(char s[],int l)///排序后返回新的字符串
    {
        strcpy(a,s);
        sort(a,a+l);
        return a;
    }
    int main()
    {
        map<string,int>M1 , M2;
        char s[15],c[15];
        int n,m;
        scanf("%d",&n);
        for(int i=0;i<n;i++)
        {
            scanf("%s",s);
            int l=strlen(s);
            M1[s]++;///原字符串出现的次数
            M2[f(s,l)]++;///排序后字符串出现的次数
        }
        scanf("%d",&m);
        while(m--)
        {
            scanf("%s",c);
            int l=strlen(c);
            printf("%d
    ",M2[f(c,l)] - M1[c]);
        }
        return 0;
    }
    








  • 相关阅读:
    纯js实现字符串formate方法
    C#实现json压缩和格式化
    简单的前端校验框架实现
    快速拷贝文件
    0012 移除元素
    0011 删除链表的倒数第N个节点
    0010 最长公共前缀
    0009 合并两个有序链表
    0008 合并K个排序链表
    0007 回文数
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387044.html
Copyright © 2011-2022 走看看