今天学习了动态规划,发现解决这类问题,稍微分析下,利用btm-up方法,都是O(N)的复杂度,真心nice!
下面直接上代码吧:
#include <iostream>
#include <string>
using namespace std;
int main(){
string s = "abbcdehijklmno";
int max = 0;
int arr[s.size()];
for (int i = 0; i < s.size(); ++i){
arr[i] = 1;
}
int begin = 0;
int end = 0;
for (int i = 1; i < s.size(); ++i){
if (s[i] == s[i-1]+1){
arr[i] = arr[i-1] + 1;
}
if (max < arr[i]){
max = arr[i];
end = i;
}
}
printf("max substr len:%d with %s\n", max, s.substr(end-max,max).c_str());
}
很简单不是吗?哈哈