Assignment - 2
Assignment - 2
Question 1-
Minimum Insertion Steps to Make a String Palindrome - LeetCode
CODE:
class Solution {
public:
int minInsertions(string s) {
int n = s.size();
vector<vector<int>> dp(n, vector<int>(n, 0));
SOLUTION:
Question 2: -
Permutations II - LeetCode
Code:
class Solution {
public:
vector<vector<int>> res;
void permute(vector<int> nums, int start){
if(start==nums.size()){
res.push_back(nums);
return;
}
for(int i=start;i<nums.size();i++){
if(i==start || nums[start]!=nums[i]){
swap(nums[start],nums[i]);
permute(nums,start+1);
}
}
}
vector<vector<int>> permuteUnique(vector<int>& nums) {
int start=0;
sort(nums.begin(), nums.end());
permute(nums,start);
return res;
}
};
SOLUTION:
Question 3: -
Group Anagrams - LeetCode
Code:
class Solution {
public:
vector<vector<string>> groupAnagrams(vector<string>& strs) {
unordered_map<string, vector<string>> mp;
for(auto x: strs){
string word = x;
sort(word.begin(), word.end());
mp[word].push_back(x);
}
vector<vector<string>> ans;
for(auto x: mp){
ans.push_back(x.second);
}
return ans;
}
};
Solution:
Question 4: -
Code:
class Solution {
public:
static bool checkSubarraySum(vector<int>& nums, int k) {
int n=nums.size();
if (n<2) return 0;
unordered_map<int, int> mod_k;
int prefix=0;
mod_k.reserve(n);
mod_k[0]=-1;
for(int i=0; i<n; i++){
prefix+=nums[i];
prefix%=k;
if (mod_k.count(prefix)){
if(i>mod_k[prefix]+1)
return 1;
}
else
mod_k[prefix]=i;
}
return 0;
}
};
Question 5: -
Code:
class Solution {
public:
string longestWord(vector<string>& words) {
sort(words.begin(), words.end());
unordered_set<string> built;
string res;
for (string w : words) {
if (w.size() == 1 || built.count(w.substr(0, w.size() - 1))) {
res = w.size() > res.size() ? w : res;
built.insert(w);
}
}
return res;
}
};