zoukankan      html  css  js  c++  java
  • 密码截取

    好吧,这两天面临着找实习工作的事了。然后huawei发过来一个账号,我打开就看到这道题了。

    其实好久都没有编程了,脑子在这个当口转得还是比较慢的。

    看了老半天,才发现,这个是输入一个随机字符串,求出它的最长对称字符串的长度。

    所以,怎么做,就很明白了。

    首先将原字符串进行倒置,然后进行移位比较,设置计数器,得到,相同的最大值。就像下面这样:

    原串是str1=“avvbeeb”,将其翻转得到str2=“beebvva”,然后错位比较:

        1:               avvbeeb

                   str2:beebvva             (上下对齐的元素是a;a比较)

     

    2:              avvbeeb

    str2:beebvva           (上下对齐的量元素av;va比较,不对称)

    …………

    11:              avvbeeb

    str2:                  beebvva           (上下对齐的量元素beeb;beeb比较,得到最长对称子串)

    …………

    该方法要移动m+n次,每次元素比较个数从1到m不等,复杂度O(n2);

    就这样就求得了最长对称子串的长度了。

    代码如下:

     1 #include <iostream>
     2 #include <string.h>
     3 using namespace std;
     4 int Maxsubstr(char a[],char b[])
     5 {
     6     int start1,start2;
     7     int count=0,Max=0;
     8     for(int i=0;a[i]!='\0';i++)
     9         for(int j=0;b[j]!='\0';j++)
    10         {
    11             start1=i;start2=j;
    12             while(a[start1]==b[start2] && start1<strlen(a) && start2<strlen(b))
    13             {
    14                 start1++;
    15                 start2++;
    16                 count++;
    17             }
    18             if(count>Max)
    19                 Max=count;
    20             count=0;
    21         }
    22         return Max;
    23 }
    24 
    25 char *Switch(char a[])
    26 {
    27     int n=strlen(a);
    28     char temp;
    29     for(int i=0;i<n/2;i++)
    30     {
    31         temp=a[i];
    32         a[i]=a[n-1-i];
    33         a[n-1-i]=temp;
    34     }
    35     return a;
    36 }
    37 
    38 int main()
    39 {
    40     char a[80];
    41     char b[80];
    42     char *c;
    43     gets(a);
    44     strcpy(b,a);
    45     c=Switch(a);
    46     cout<<Maxsubstr(b,c);
    47     return 0;
    48 }

     对称子串部分,引用了网友的一些总结,链接如下:http://www.jb51.net/article/48090.htm

  • 相关阅读:
    关于《大道至简-软件工程实践者的思想》的读书笔记(二)
    关于《大道至简-软件工程实践者的思想》的读书笔记(一)
    Android源码项目目录结构
    Android源码目录结构详解
    项目阶段总结
    站立会议07(二期)
    站立会议06(二期)
    站立会议05(二期)
    站立会议04(二期)
    站立会议03(二期)
  • 原文地址:https://www.cnblogs.com/JackFu/p/4369907.html
Copyright © 2011-2022 走看看