华为上机题目之最长回文

时间:2020-11-12 09:28:30 华为认证 我要投稿

2016年华为上机题目之最长回文

  本文为同学们分享的是华为上机题目之最长回文,希望对大家复习华为认证有所帮助!

  一段字符串中提取最长的回文长度:

  浅显易懂的`想法就是假设任何一个位置的字符为回文中心,进行两个方向的扩散,进而提取最长回文。

  这是最朴素的想法:

  代码如下:

  1 #include

  2 #include

  3 using namespace std;

  4

  5 char str[100]="abbbbaaa";

  6

  7

  8 //如果是回文长度是偶数个

  9 int getMidtwoNum(char* s,int length,int index)

  10 {

  11 int re=1;

  12 int t=index,b=index+1;

  13 while(t>=0&&b

  14 {

  15 if(t==index)

  16 re++;

  17 else

  18 re+=2;

  19 b++;

  20 t--;

  21 }

  22 return re;

  23 }

  24

  25 //回文长度是奇数个

  26 int getMidoneNum(char* s,int length,int index)

  27 {

  28 int re=1;

  29 int t=index-1,b=index+1;

  30 while(t>=0&&b

  31 {

  32 re+=2;

  33 b++;

  34 t--;

  35 }

  36 return re;

  37 }

  38

  39 int getLhw(char* s)

  40 {

  41 int length=strlen(s);

  42 int re=0;

  43 int temp=0;

  44 for(int i=0;i

  45 {

  46 temp=max(getMidoneNum(s,length,i),getMidtwoNum(s,length,i));

  47 if(temp>re)

  48 {

  49 re=temp;

  50 }

  51 }

  52 return re;

  53 }

  54 int main()

  55 {

  56 cout<

  57 getchar();

  58 }

【2016年华为上机题目之最长回文】相关文章:

1.华为上机试题汇总

2.华为Java上机考试题

3.华为C语言上机试题及答案

4.2016年华为上机考试题

5.2016年华为认证上机考试题

6.2016年华为认证C/C++笔试题目

7.CAD上机实习报告

8.华为认证简介