C++ÖÐʵÏÖ×î´ó»ØÎÄ×Ó´®
01.// huiwen.cpp : ¶¨Òå¿ØÖÆÌ¨Ó¦ÓóÌÐòµÄÈë¿Úµã¡£
02.//
03.
04.#include "stdio.h"
05.#include "stdlib.h"
06.#include "iostream"
07.
08.using namespace std;
09.
10.bool isHuiwen£¨char * str£©£»
11.bool isHuiwen2£¨char * ps, char * pn£©£»
12.char * findBiggestHuiwen£¨char * str£©£»
13.
14.
15.int main£¨int argc, char * argv[]£©
16.{
17. char str[] = "123456";
18.
19. cout¡¶sizeof£¨str£©¡¶endl;
20. bool result = isHuiwen£¨str£©£»
21. cout¡¶str¡¶":"¡¶result¡¶endl;
22.
23. char str2[] = "123456654321";
24. bool result2 = isHuiwen£¨str2£©£»
25. cout¡¶str2¡¶":"¡¶result2¡¶endl;
26.
27. char str3[] = "123454321";
28. bool result3 = isHuiwen£¨str3£©£»
29. cout¡¶str3¡¶":"¡¶result3¡¶endl;
30.
31. char str4[] = "abcde123321d";
32. char * p = findBiggestHuiwen£¨str4£©£»
33. cout¡¶str4¡¶":"¡¶p¡¶endl;
34.
35. char str5[] = "123454321abcdefg";
36. char * p1 = findBiggestHuiwen£¨str5£©£»
37. cout¡¶str5¡¶":"¡¶p1¡¶endl;
38.
39. system£¨"pause"£©£»
40. return 0;
41.}
42.
43.char * findBiggestHuiwen£¨char * str£©
44.{
45. char * presult;
46. char * ps = str;
47. char * pn = str;
48. while£¨*pn != '\0'£© pn++;
49. pn--;
50.
51. int max = 0;
52.
53. while£¨ps < pn£©
54. {
55. // ÅжÏÒÔps¿ªÊ¼µÄÿһ¸ö×Ö·û´®
56. // ÒÆ¶¯pn»ñÈ¡ÒÔps¿ªÊ¼µÄÿ¸ö×Ö·û´®
57. char * pend = pn;
58. while£¨pend > ps£©
59. {
60. if£¨isHuiwen2£¨ps, pend£©£©
61. {
62. int length = pend - ps + 1;
63. if£¨max < length£©
64. {
65. max = length;
66. presult = ps;
67. }
68. }
69.
70. pend--;
71. }
72.
73. ps++;
74. }
75.
76. char * result = £¨char *£©malloc£¨sizeof£¨char£©*£¨max + 1£©£©£»
77. for£¨int i = 0; i < max; i++£©
78. result[i] = *presult++;
79. result[max] = '\0';
80. return result;
81.}
82.
83.bool isHuiwen2£¨char * ps, char * pn£©
84.{
85. if£¨ps >= pn£© return false;
86. while£¨ps <= pn£©
87. {
88. if£¨*ps != *pn£©
89. break;
90. else
91. {
92. ps++;
93. pn--;
94. }
95. }
96.
97. if£¨ps <= pn£© return false;
98. else return true;
99.}
100.
101.
102.bool isHuiwen£¨char * str£©
103.{
104. if£¨str == NULL£© return false;
105. if£¨strlen£¨str£© <= 1£© return false;
106.
107. char * ps = str;
108. char * pn = str;
109. while£¨*pn != '\0'£©
110. pn++;
111. pn--;
112.
113. while£¨ps<=pn£©
114. {
115. if£¨*ps != *pn£©
116. break;
117. else
118. {
119. ps++;
120. pn--;
121. }
122. }
123.
124. if£¨ps<=pn£© return false;
125. else return true;
126.}