很经典的题目,求字符串中的最长回文子串。
(1)最朴素的解法 ---暴力 复杂度O(N³)
这也是最容易想到的方法,最外层循环枚举起点i,第二层循环从i+1开始向后枚举,第三层判断是不是回文串。最后取最长子串的返回。
代码比较简单,这里没有列出。
(2)中心扩展法。复杂度O(N²)
枚举每一个字符作为中心点向左右扩展。但是这里要注意,对于每一次扩展要分奇偶两种情况。否则可能会漏掉情况。
...
                            
                            
                                分类:
其他好文   时间:
2015-07-16 09:52:23   
                                阅读次数:
141
                             
                    
                        
                            
                            
                                应用场景: 获取两个字符串所有公共的子串。
思路: 1. 先获取两个子串的交集
             2. 遍历交集子串,从最短子串到最长子串
public static List getAllCommonSubStrings(String str1, String str2) {
        //TODO null check.
        
        Strin...
                            
                            
                                分类:
编程语言   时间:
2015-07-01 18:12:35   
                                阅读次数:
155
                             
                    
                        
                            
                            
                                题意很简单,就是寻找一个字符串中连续的最长包含不同字母的子串。其实用最朴素的方法,从当前字符开始寻找,找到以当前字符开头的最长子串。这个方法猛一看是个n方的算法,但是要注意到由于字符数目的限制,其实这是个O(Cn)的算法,最长也不过是C长度。所以我觉得普通方法应该是能过的。于是写了一个,字符数目最大...
                            
                            
                                分类:
其他好文   时间:
2015-06-29 00:23:08   
                                阅读次数:
107
                             
                    
                        
                            
                            
                                题目:在一个序列中找一个最长子串,使得子串的m
维护一个递减的单调队列q1(队首为当前最大),同时维护一个递增的单调队列q2(队首为当前最小),控制最大减最小 小于等于k , 若最大减最小大于等于m,则更新答案。
代码:
#include
#include
#include
#include
#include
using namespace std;
const int N = 1e5+10...
                            
                            
                                分类:
其他好文   时间:
2015-06-19 11:58:57   
                                阅读次数:
114
                             
                    
                        
                            
                            
                                注意此处说的是重复的最长子串,只要出现重复就好,没说重复的次数。
下面给出的代码是编程珠玑中给出的一种实现。
他是通过后缀数组的方式实现的。
#include
#include
#include
using namespace std;
int comlen(char*p, char*q)//找出公共的最长子串
{
	int i = 0;
	if (p == NULL || q == NUL...
                            
                            
                                分类:
其他好文   时间:
2015-06-15 01:47:35   
                                阅读次数:
218
                             
                    
                        
                            
                            
                                有一个仅有0和1组成的01串,找到其中最长的一段子串,使得该子串中0和1的数目相等...
                            
                            
                                分类:
编程语言   时间:
2015-05-12 15:45:02   
                                阅读次数:
169
                             
                    
                        
                            
                            
                                有一个仅有0和1组成的01串,找到其中最长的一段子串,使得该子串中0和1的数目相等...
                            
                            
                                分类:
编程语言   时间:
2015-05-12 15:42:58   
                                阅读次数:
201
                             
                    
                        
                            
                            
                                查找字符串中最长子串,例如“I love OC”最长子串为“love” 1 void findMaxLengthSubstr1(char *src) 2 { 3 char *start = src; 4 char *end = src; 5 unsigned int maxL...
                            
                            
                                分类:
其他好文   时间:
2015-05-11 17:36:39   
                                阅读次数:
127
                             
                    
                        
                            
                            
                                在一个字符串中找到可能的最长的子字符串(该子字符串由同一字符组成)...
                            
                            
                                分类:
其他好文   时间:
2015-04-30 08:53:51   
                                阅读次数:
109
                             
                    
                        
                            
                            
                                题目:LeetCode 003 Longest Substring Without Repeating Characters题意:给一个字符串,找到一个没有重复字符的最长子串。样例:”bbbbb” 返回”b”的长度1;”abcabcbb”返回”abc”的长度3。思路:动态规划。dp[i]表示以第i个...
                            
                            
                                分类:
其他好文   时间:
2015-04-26 18:15:18   
                                阅读次数:
117