File tree Expand file tree Collapse file tree
longest-common-subsequence
longest-repeating-character-replacement Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ /*
2+ // Definition for a Node.
3+ class Node {
4+ public:
5+ int val;
6+ vector<Node*> neighbors;
7+ Node() {
8+ val = 0;
9+ neighbors = vector<Node*>();
10+ }
11+ Node(int _val) {
12+ val = _val;
13+ neighbors = vector<Node*>();
14+ }
15+ Node(int _val, vector<Node*> _neighbors) {
16+ val = _val;
17+ neighbors = _neighbors;
18+ }
19+ };
20+ */
21+
22+ class Solution {
23+ public:
24+ Node* cloneGraph (Node* node) {
25+ if (node == nullptr )
26+ {
27+ return node;
28+ }
29+
30+ if (nodeMap.contains (node))
31+ {
32+ return nodeMap[node];
33+ }
34+
35+ Node* copied = new Node (node->val );
36+ nodeMap[node] = copied;
37+ for (auto n : node->neighbors )
38+ {
39+ copied->neighbors .push_back (cloneGraph (n));
40+ }
41+
42+ return copied;
43+ }
44+
45+ private:
46+ unordered_map<Node*, Node*> nodeMap;
47+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int longestCommonSubsequence (string text1, string text2) {
4+ vector<int > d (text1.length (), 0 );
5+ int ans = 0 ;
6+
7+ for (auto c : text2)
8+ {
9+ int cur = 0 ;
10+ for (int i = 0 ; i < d.size (); i++)
11+ {
12+ if (cur < d[i])
13+ {
14+ cur = d[i];
15+ }
16+ else if (c == text1[i])
17+ {
18+ d[i] = cur + 1 ;
19+ ans = max (ans, cur + 1 );
20+ }
21+ }
22+ }
23+
24+ return ans;
25+ }
26+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int characterReplacement (string s, int k) {
4+ unordered_map<char , int > freq;
5+ int res = 0 ;
6+ int i = 0 ;
7+ int maxFreq = 0 ;
8+
9+ for (int j = 0 ; j < s.size (); j++)
10+ {
11+ freq[s[j]]++;
12+ maxFreq = max (maxFreq, freq[s[j]]);
13+
14+ while ((j - i + 1 ) - maxFreq > k)
15+ {
16+ freq[s[i]]--;
17+ i++;
18+ }
19+
20+ res = max (res, j - i + 1 );
21+ }
22+
23+ return res;
24+ }
25+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int countSubstrings (string s) {
4+ int n = s.size ();
5+ if (n == 0 )
6+ {
7+ return 0 ;
8+ }
9+
10+ vector<vector<int >> dp (n, vector<int >(n));
11+
12+ int ans = n;
13+ for (int i = 0 ; i < n; ++i)
14+ {
15+ dp[i][i] = true ;
16+ }
17+
18+ for (int i = 0 ; i < n - 1 ; ++i)
19+ {
20+ dp[i][i + 1 ] = (s[i] == s[i + 1 ]);
21+ ans += dp[i][i + 1 ];
22+ }
23+
24+ for (int l = 3 ; l <= n; ++l)
25+ {
26+ for (int i = 0 , j = i + l - 1 ; j < n; ++i, ++j)
27+ {
28+ dp[i][j] = dp[i + 1 ][j - 1 ] && (s[i] == s[j]);
29+ ans += dp[i][j];
30+ }
31+ }
32+
33+ return ans;
34+ }
35+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int reverseBits (int n) {
4+ int r = 0 ;
5+
6+ for (int i = 0 ; i <= 31 ; ++i)
7+ {
8+ int pot = 1 << i;
9+ if ((n & pot) != 0 )
10+ {
11+ r |= (1 << (31 - i));
12+ }
13+ }
14+
15+ return r;
16+ }
17+ };
You can’t perform that action at this time.
0 commit comments