算法
要个男盆友扭蛋
这个作者很懒,什么都没留下…
展开
-
最长回文子串
方法一:分治回文有两种类型:奇数长度的回文和偶数长度的回文字符串表示为s,s的最长回文子串用ans表示。奇数长度回文: 以i为对称中心,对称半径为j(j>=0) (i-j) ... i ... (i+j) 总长度是2j-1 在i-j和i+j在合理范围内时,如果有s[i-j]==s[i+j],而且ans的长度小于2j-1,则令ans=s.substr(i-j,2j-1),然后j++,继续比较s[i原创 2016-01-08 19:44:41 · 450 阅读 · 0 评论 -
回文字符串切割问题
问题描述 对任意一个字符串进行切割,使得切割后的每一个字符串都是回文字符串。列出切割后的所有结果。 方法一:深度优先搜索 以string s的下标调用dfs函数,index表示当前要开始切割的下标,i表示目前要切割的终点位置,其中index<=i//判断是否是回文 bool isPalindrome(string &s) { for(int i=0;i<s.length()/2;i++)原创 2016-01-08 19:46:04 · 1128 阅读 · 0 评论 -
C++编程练习
字符的左右移动题目 字符串是任意的*和字母的组合,设计算法,把*都移到最左边,字母都移到最右边且保持相对顺序不变。 实现 逆序处理字符串。双指针,一个指针alpha最初指向最右边的字符,另一个last指针最初指向最右边的*。 当alpha指向字母时,就和last指向的字符互换,并且这两个指针同时向左移一位。 当alpha指向*时,只有alpha向左移动一位。 当alpha<0时,结束。 代码void原创 2016-01-08 21:42:11 · 982 阅读 · 0 评论