void reverseString(string &str, int left, int right) {         int i = left;         int j = right;         while (i < j) {             swap(str[i], str[j]);             i++;             j--;         }     }     int getSubStringLen(string & str)     {         if (str.size() <= 1)             return str.size();         vector<int> v(str.size(), 0);//v[i]表示以str[i]结尾的最长黑白相间长度         v[0] = 1;         for (int i = 1; i < str.size(); i++)         {             if (str[i] != str[i - 1])//若不相等,一直向下查找                 v[i] = v[i - 1] + 1;             else             {                 if (str[i] == str[str.size() - 1] && str[i] == str[0])//当前节点与首节点和尾节点均相等则翻转后也不会改变长度                     v[i] = 1;                 else //翻转                 {                     reverseString(str, i, str.size() - 1);                     reverseString(str, 0, i - 1);                     v[i] = v[i - 1] + 1;                 }             }         }         int min = 0;         for (int i = 0; i < v.size(); i++)         {             if (v[i] > min)                 min = v[i];         }         return min;     }
点赞 评论

相关推荐

我就是0offer糕手:北大不乱杀
点赞 评论 收藏
分享
04-09 09:47
门头沟学院 Java
Arbelite_:2-3k,这工资还不如去摇奶茶
点赞 评论 收藏
分享
牛客网
牛客企业服务