-
今日学习的文章链接,或者视频链接
-
自己看到题目的第一想法
-
看完代码随想录之后的想法
647
class Solution {
public:
int countSubstrings(string s) {
int n = s.size();
if(n==0) return 0;
if(n==1) return 1;
int result = 0;
vector<vector<bool>> dp(n,vector<bool>(n,false));
for(int i = n-1;i>=0;i--){
for(int j = i;j<n;j++){
if(s[i]==s[j]){
if(j-i<=1){
result++;
dp[i][j] = true;
}else if(dp[i+1][j-1]){
result++;
dp[i][j] = true;
}
}else{
dp[i][j] = false;
}
}
}
return result;
}
};
双指针:
class Solution {
public:
int extend(string &s,int size,int i,int j){
int result = 0;
while(i>=0&&j<size&&s[i]==s[j]){
i-=1;
j+=1;
result++;
}
return result;
}
int countSubstrings(string s) {
int n = s.size();
int result = 0;
for(int i = 0;i<n;i++){
result+=extend(s,n,i,i);
result+=extend(s,n,i,i+1);
}
return result;
}
};
516
class Solution {
public:
int longestPalindromeSubseq(string s) {
int n = s.size();
vector<vector<int>> dp(n,vector<int>(n,0));
for(int i = 0;i<n;i++){
dp[i][i] = 1;
}
for(int i = n-1;i>=0;i--){
for(int j = i+1;j<n;j++){
if(s[i] == s[j]){
dp[i][j] = dp[i+1][j-1]+2;
}else{
dp[i][j] = max(dp[i+1][j],dp[i][j-1]);
}
}
}
return dp[0][n-1];
}
};
-
自己实现过程中遇到哪些困难
-
今日收获,记录一下自己的学习时长