糯米文學吧

位置:首頁 > IT認證 > 華為認證

2016年華為上機題目之最長迴文

本文為同學們分享的'是華為上機題目之最長迴文,希望對大家複習華為認證有所幫助!

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 }