• 字符串排列后匹配


    这题 我是在待字闺中看到的 他介绍了一种使用快排排序后 不断进行匹配的算法

    这边 我用了下map来做 直接用hash数组也可以

    我觉得 用hash数组的话 存 删都是O(1)完成 map则是log(n)

    但是使用hash遍历会需要遍历很多无效字符 而map则使用迭代器 方便很多

    两者各有优劣吧... 、

    原题 贴下

    给定两个字符串A和B,判断A中是否包含由B中字符重新排列成的新字符串。例如:A=abcdef, B=ba,结果应该返回true。因为ba的排列ab,是A的子串。

     1 #include <iostream>
     2 #include <map>
     3 using namespace std;
     4 
     5 map<char,int>mp_model;
     6 map<char,int>mp_goal;
     7 map<char,int>::iterator it_goal;
     8 map<char,int>::iterator it_model;
     9 const int size = 1010;
    10 char model[size];
    11 char goal[size];
    12 
    13 bool judge( )
    14 {
    15     for( it_model = mp_model.begin() , it_goal = mp_goal.begin() ; it_model!=mp_model.end()&& it_goal!=mp_goal.end() ; it_model++ , it_goal++ )
    16     {
    17         if( it_model->first != it_goal->first || it_model->second!= it_goal->second )
    18             return false;
    19     }
    20     if( it_model != mp_model.end() || it_goal != mp_goal.end() )
    21         return false;
    22     return true;
    23 }
    24 
    25 int main()
    26 {
    27     bool flag;
    28     int len_model , len_goal;
    29     while( cin >> model >> goal )
    30     {
    31         mp_model.clear();
    32         mp_goal.clear();
    33         flag = false;
    34         len_model = strlen(model);
    35         len_goal = strlen(goal);
    36         if( len_model < len_goal )
    37         {
    38             cout << "False" << endl;
    39         }
    40         else
    41         {
    42             for( int i = 0 ; i<len_goal ; i++ )
    43             {
    44                 mp_goal[ goal[i] ] ++;
    45                 mp_model[ model[i] ] ++;
    46             }
    47             for( int j = len_goal-1 ; j<len_model ; j++ )
    48             {
    49                 flag = judge( );
    50                 if( flag )
    51                 {
    52                     break;
    53                 }
    54                 else
    55                 {
    56                     mp_model[ j+1-len_goal] --;
    57                     mp_goal[j] ++;
    58                 }
    59             }
    60             if(flag)
    61                 cout << "True" << endl;
    62             else
    63                 cout << "False" << endl;
    64         }
    65     }
    66     return 0;
    67 }
    View Code

    today:

      我大二了

      轮到我去招新了

      时间过得好快

      学弟学妹是否会如我当初一样呢

      要做点题目了 不然很丢人那

    just follow your heart
  • 相关阅读:
    BestCoder Round #87 1001
    p1304 家族
    hdu 1003
    hdu 1231
    hdu 1232 畅通工程
    hdu 4107
    Robot Framework--用例、数据、流程分离例子
    Robot Framework--RIDE面板与库的说明
    Robot Framework--pybot命令
    Robot Framework--运行pybot时出错
  • 原文地址:https://www.cnblogs.com/radical/p/3988174.html
Copyright © 2020-2023  润新知