算法题11 字符串的所有对称子串

题目

  给定一个字符串,求其中所有的对称子串

分析

  对称字符串无非两种情况,一是以1个字符为中心对称,如"abcba",一是完全对称,如"abccba"。对于字符串对称的判断,从内往外查找比较方便

代码 

 1 int SymmtricSubStrings(char* str,vector<string>& vSubStrs)
 2 {
 3     if (str==NULL)
 4     {
 5         return -1;
 6     }
 7     string s=str;
 8 
 9     //遍历字符串
10     char* p=str+1;
11     while (*p!='\0')
12     {
13         //odd nums
14         char* pre=p-1;
15         char* next=p+1;
16         int len=1;
17         while (pre>=str&&*next!='\0'&&*pre==*next)
18         {
19             len=len+2;
20             pre--;
21             next++;
22         }
23         if (len>1)
24         {
25             vSubStrs.push_back(s.substr(pre-str+1,len));
26         }
27 
28         //even nums
29         pre=p-1;
30         next=p;
31         len=0;
32         while (pre>=str&&*next!='\0'&&*pre==*next)
33         {
34             len=len+2;
35             pre--;
36             next++;
37         }
38         if (len>1)
39         {
40             vSubStrs.push_back(s.substr(pre-str+1,len));
41         }
42 
43         p++;
44     }
45 
46     return 0;
47 
48 }

 

posted @ 2016-02-02 11:25  summerxx  阅读(934)  评论(0编辑  收藏  举报