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)
26+ return nullptr ;
27+
28+
29+ Node* clone = new Node (node->val );
30+ map<Node*, Node*> clones;
31+ queue<Node*> que;
32+
33+ clones[node] = clone;
34+ que.push (node);
35+
36+ while (!que.empty ()) {
37+ node = que.front ();
38+ que.pop ();
39+
40+ for (auto neigh : node->neighbors ) {
41+ if (clones.find (neigh) == clones.end ()) {
42+ que.push (neigh);
43+ clones[neigh] = new Node (neigh->val );
44+ }
45+ clones[node]->neighbors .push_back (clones[neigh]);
46+ }
47+ }
48+
49+ return clone;
50+ }
51+ };
52+
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int longestCommonSubsequence (string text1, string text2) {
4+ int n = text1.size (), m = text2.size ();
5+ vector<vector<int >> dp (n, vector<int > (m, 0 ));
6+
7+ for (int i = 0 ; i < n ; i++) {
8+ for (int j = 0 ; j < m; j++) {
9+ dp[i][j] = max ((i == 0 ? 0 : dp[i - 1 ][j]), (j == 0 ? 0 : dp[i][j - 1 ]));
10+ if (text1[i] == text2[j])
11+ dp[i][j] = (i == 0 || j == 0 ? 0 : dp[i - 1 ][j - 1 ]) + 1 ;
12+ }
13+ }
14+
15+ return dp[n - 1 ][m - 1 ];
16+ }
17+ };
18+
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int characterReplacement (string s, int k) {
4+ int left = 0 , right = 0 , ans = 0 ;
5+ int maxi_cnt = 0 ;
6+ map<char , int > cnt;
7+
8+ while (left < s.size () && right < s.size ()) {
9+ cnt[s[right]]++;
10+ maxi_cnt = max (maxi_cnt, cnt[s[right]]);
11+ right++;
12+
13+ if (right - left - maxi_cnt <= k)
14+ ans = max (ans, right - left);
15+ else
16+ cnt[s[left++]]--;
17+ }
18+
19+ return ans;
20+ }
21+ };
22+
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+ int countSubstrings (string s) {
4+ int ans = 0 , n = s.size ();
5+ for (int i = 0 ; i < n; i++) {
6+ int left = i, right = i;
7+ while (left >= 0 && right < n && s[left] == s[right]) {
8+ ans++;
9+ left--;
10+ right++;
11+ }
12+
13+ left = i, right = i + 1 ;
14+ while (left >= 0 && right < n && s[left] == s[right]) {
15+ ans++;
16+ left--;
17+ right++;
18+ }
19+ }
20+
21+ return ans;
22+ }
23+ };
24+
Original file line number Diff line number Diff line change 1+ // class Solution {
2+ // public:
3+ // int reverseBits(int n) {
4+ // string bits = "";
5+
6+ // while(n) {
7+ // bits += (n % 2) + '0';
8+ // n /= 2;
9+ // }
10+
11+ // while(bits.size() < 32)
12+ // bits += '0';
13+
14+ // int ans = 0, d = 1;
15+ // for(int i = 31; i >= 0; i--) {
16+ // ans += d * (bits[i] - '0');
17+ // d <<= 1;
18+ // }
19+
20+ // return ans;
21+ // }
22+ // };
23+
24+ class Solution {
25+ public:
26+ int reverseBits (int n) {
27+ int ans = 0 ;
28+ for (int i = 0 ; i < 32 ; i++) {
29+ ans <<= 1 ;
30+ ans |= (n & 1 );
31+ n >>= 1 ;
32+ }
33+ return ans;
34+ }
35+ };
36+
You can’t perform that action at this time.
0 commit comments