zoukankan      html  css  js  c++  java
  • hdu 1238【Substrings】

    直接用string类里面的一些函数

    先排序,然后用最短的那个字符串的子串跟其他字符串的子串比较。。。

    代码如下:
     1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 bool cmp(const string& a,const string& b)
     7 {
     8     return a.size() < b.size();
     9 }
    10 
    11 void inverse(string& aim)
    12 {
    13     string::size_type size = aim.size(),i = 0;
    14     char ch;
    15     while(i != size / 2)
    16     {
    17         ch = aim[i];
    18         aim[i] = aim[size - 1 - i];
    19         aim[size - 1 - i] = ch;
    20         i ++;
    21     }
    22 }
    23 
    24 bool search(string a,string& b,int len)
    25 {
    26     int size = b.size();
    27     for(int i = 0;i <= size - len;++ i)
    28     {
    29         if(!a.compare(0,len,b,i,len))
    30             return true;
    31     }
    32 
    33     inverse(a);
    34     for(int i = 0;i <= size - len ;++ i)
    35     {
    36         if(!a.compare(0,len,b,i,len))
    37             return true;
    38     }
    39 
    40     return false;
    41 }
    42 
    43 int main()
    44 {
    45     int cas;
    46     int n;
    47     cin >> cas;
    48     while(cas --)
    49     {
    50         cin >> n;
    51         string str[150];
    52         for(int i = 0;i < n;i ++)
    53         {
    54             cin >> str[i];
    55         }
    56 
    57         sort(str,str + n,cmp);
    58 
    59         int len = str[0].size();
    60         int maxlen = 0;
    61         for(int i = 1;i <= len;++ i)
    62         {
    63             int flag = 0;
    64             for(int j = 0;!flag && j < len - i + 1;++ j)
    65             {
    66                 string temp = str[0].substr(j,i);
    67                 int k = 1;
    68                 for(;k < n;++ k)
    69                 {
    70                     if(!search(temp,str[k],i))
    71                     {
    72                         break;
    73                     }
    74                 }
    75                 if(k == n)
    76                     flag = 1;
    77             }
    78             if(!flag)
    79                 break;
    80             else
    81             {
    82                 maxlen = i;
    83             }
    84         }
    85 
    86         cout << maxlen << endl;
    87     }
    88 
    89     return 0;
    90 }
  • 相关阅读:
    WPF 本地化语言设置
    WPF 调节树状图滚动条值
    WPF中ListBox的使用注意事项
    SQL 树状结构表中查出所所有父级/子级
    Vue创建
    wpf 控件注意事项
    链表习题(1)-设计一个递归算法,删除不带头结点的单链表L中所有值为x的结点
    排序-快速排序
    排序-堆排序
    图-图的遍历
  • 原文地址:https://www.cnblogs.com/Shirlies/p/2609661.html
Copyright © 2011-2022 走看看