很经典的题目,求字符串中的最长回文子串。
(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