• hdu-2609-How many(串的最小表示)


    题目链接

     1 /*
     2     Name:hdu-2609-How many
     3     Copyright:
     4     Author:
     5     Date: 2018/4/24 15:47:49
     6     Description:
     7     串的最小表示 
     8     求出每个串的最小表示,用set去重 
     9 */
    10 #include <iostream>
    11 #include <cstdio>
    12 #include <algorithm>
    13 #include <set>
    14 
    15 using namespace std;
    16 string smallestRepresation (string s)  {
    17     int i, j ,k ,l;
    18     int N = s.length();
    19     s += s;
    20     for (i=0, j=1; j<N;) {
    21         for (k=0; k<N && s[i+k] == s[j+k]; k++) ;
    22         if (k >=N ){
    23             break;
    24         }
    25         if (s[i+k] <s[j+k]) {
    26             j += k+1;
    27         } else {
    28             l = i + k;
    29             i = j;
    30             j = max(l ,j) + 1;
    31         }
    32     }
    33     return s.substr(i, N);
    34 }
    35 int main()
    36 {
    37     int n;
    38     set<string> capt;
    39     while (cin>>n) { 
    40         string str;
    41         capt.clear();
    42         for (int i=0; i<n; i++) {
    43             cin>>str;
    44             capt.insert(smallestRepresation(str));
    45         }
    46         cout<<capt.size()<<endl;
    47     }
    48     return 0;
    49 }
  • 相关阅读:
    terraform入门操作指南
    linux常用命令
    pssh用法范例
    nginx共享内存使用
    Redis监控指标[转]
    xargs用法笔记
    systemd用法记录一
    esxcli部分常用命令
    lua自定义功能模块table类型转string类型
    curl用法笔记
  • 原文地址:https://www.cnblogs.com/langyao/p/8931299.html
Copyright © 2020-2023  润新知