File tree Expand file tree Collapse file tree 4 files changed +105
-0
lines changed Expand file tree Collapse file tree 4 files changed +105
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments