zoukankan      html  css  js  c++  java
  • Gym 100247B Similar Strings(哈希+思维)

    https://vjudge.net/problem/Gym-100247B

    题意:

    如果两个字符串通过映射后是一样的,则说明这两个字符串是相似的,现在给出n个字符串,计算出有多少组字符串是相似的。

    思路:
    直接暴力超时了。。

    拿样例来说吧,abacaba可以转化成1213121。那么和它相似的字符串也能转化成这个数字串,比如说tetatet,它映射后也能变成1213121。

    这样对每个字符串处理一遍就可以了。

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<vector>
     5 #include<map>
     6 using namespace std;
     7 const int maxn = 1e6+5;
     8 
     9 char s[maxn];
    10 int used[30];
    11 
    12 vector<int> v;
    13 map<vector<int>, int> mp;
    14 
    15 int main()
    16 {
    17     //freopen("in.txt","r",stdin);
    18     int n;
    19     long long ans = 0;
    20     scanf("%d",&n);
    21     for(int i=1;i<=n;i++)
    22     {
    23         scanf("%s",s);
    24         int len = strlen(s);
    25         int num = 0;
    26         memset(used,0,sizeof(used));
    27         v.clear();
    28         for(int i=0;i<len;i++)
    29         {
    30             int c = s[i]-'a';
    31             if(used[c])  v.push_back(used[c]);
    32             else
    33             {
    34                 used[c] = ++num;
    35                 v.push_back(used[c]);
    36             }
    37         }
    38         ans+=mp[v]++;
    39     }
    40     printf("%lld
    ",ans);
    41     return 0;
    42 }
  • 相关阅读:
    HTTP协议简介
    HTTP缓存带来的“bug”--HTTP 协议 Cache-Control
    PHP7变量的内部实现(一)
    PHP 简单的加密解密方法
    php 制作圆形图片
    python解决图的最短路径问题
    PHP中文关键词匹配
    D25
    D24
    D23
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/8046017.html
Copyright © 2011-2022 走看看