Skip to content

Commit a468152

Browse files
Add files via upload
1 parent 7304997 commit a468152

File tree

4 files changed

+105
-0
lines changed

4 files changed

+105
-0
lines changed
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
int Solution::solve(string A) {
2+
long long mod = 1000000007;
3+
int n;
4+
n = A.length();
5+
if(n==1)
6+
{
7+
return 1;
8+
}
9+
long long dp[n+1][n+1];
10+
for(int i=0;i<=n;i++)
11+
{
12+
for(int j=0;j<=n;j++)
13+
{
14+
dp[i][j] = 0;
15+
}
16+
}
17+
for(int i = 0; i<n;i++)
18+
{
19+
dp[i][i] = 1;
20+
}
21+
for(int i=0;i<n-1;i++)
22+
{
23+
if(A[i] == A[i+1])
24+
{
25+
dp[i][i+1] = 3;
26+
}
27+
else
28+
{
29+
dp[i][i+1] = 2;
30+
}
31+
}
32+
for(int i=3;i<=n;i++)
33+
{
34+
for(int j=0;i+j-1<n;j++)
35+
{
36+
long long a = 0;
37+
if(A[j] == A[i+j-1])
38+
{
39+
a = 1;
40+
}
41+
dp[j][i+j-1] = (((dp[j + 1][i + j - 1]%mod) + (dp[j][i + j - 2] - dp[j + 1][i + j - 2])%mod)%mod + ((a) * (dp[j + 1][i + j - 2]+1))%mod)%mod;
42+
}
43+
}
44+
return dp[0][n-1]%mod;
45+
}

Time Complexity/Find subsequence.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
string Solution::solve(string A, string B) {
2+
int m = A.length();
3+
int n = B.length();
4+
int i=0,j=0;
5+
while(i<m && j<n)
6+
{
7+
if(A[i] == B[j])
8+
{
9+
i++;
10+
j++;
11+
}
12+
else
13+
{
14+
j++;
15+
}
16+
}
17+
if(i == m)
18+
{
19+
return "YES";
20+
}
21+
return "NO";
22+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
string Solution::longestPalindrome(string s) {
2+
if (s.empty()) return "";
3+
if (s.size() == 1) return s;
4+
int min_start = 0, max_len = 1;
5+
for (int i = 0; i < s.size();) {
6+
if (s.size() - i <= max_len / 2) break;
7+
int j = i, k = i;
8+
while (k < s.size()-1 && s[k+1] == s[k]) ++k; // Skip duplicate characters.
9+
i = k+1;
10+
while (k < s.size()-1 && j > 0 && s[k + 1] == s[j - 1]) { ++k; --j; } // Expand.
11+
int new_len = k - j + 1;
12+
if (new_len > max_len) { min_start = j; max_len = new_len; }
13+
}
14+
return s.substr(min_start, max_len);
15+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
string Solution :: solve(vector <vector <int> > &A)
2+
{
3+
int n = A.size();
4+
string temp = "";
5+
for (int i = 0 ; i < n ; i++)
6+
{
7+
temp = temp + "-" + to_string(A[0][i]);
8+
}
9+
temp += temp;
10+
for (int i=1; i<n; i++)
11+
{
12+
string s = "";
13+
for (int j = 0 ; j < n ; j++)
14+
{
15+
s = s + "-" + to_string(A[i][j]);
16+
}
17+
if (temp.find(s) == string::npos)
18+
{
19+
return "NO";
20+
}
21+
}
22+
return "YES";
23+
}

0 commit comments

Comments
 (0)