您的位置:首页 > 其它

[LeetCode] Longest Palindromic Substring 使用2D-vector 和 2D-array的区别

2014-12-22 13:14 429 查看
一下这段代码,我是用的是dynamic programming的方法。采用了以2D-vector作为memoization的做法。结果系统告诉我超时。当我采用普通二维数组的时候就被接受了。其实两种方法世间复杂度都是O(n^2),空间复杂度也都是O(n^2)。所以我觉得才用STL会一定程度上占用更多的时间来完成任务。
// Memoization
class Solution {
public:
string longestPalindrome(string s) {
int size = s.size();
vector<vector<bool>> memo(s.length(), vector<bool>(s.length(), false));
int tmpSt = 0, tmpEnd = 0;
int maxLen = 1;

for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
if(i >= j) memo[i][i] = true;

for(int j = 1; j < size; j++)
for(int i = 0; i < j; i++)
{
if(memo[i+1][j-1] == true && s[i] == s[j])
{
memo[i][j] = true;
if(maxLen < j - i + 1)
{
tmpSt = i; tmpEnd = j;
maxLen = j - i + 1;
}
}
else
memo[i][j] = false;
}

return s.substr(tmpSt, tmpEnd - tmpSt + 1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: