IMPORTANT! Use Haskell Write a function that maps a list of Strings that may hav
ID: 3605314 • Letter: I
Question
IMPORTANT! Use Haskell
Write a function that maps a list of Strings that may have multiple words to Strings with only the first word left. E.g. ["Today is Thursday", "Banquet", "unreal games"] becomes ["Today", "Banquet", "unreal"].
Write a function that takes a two-dimensional matrix of Strings and transforms all empty strings to "0".
Sort a list of Strings by length of the first word in the strings (if the strings have more than one word)
Pack repeats in a list of Chars into separate lists, resulting in a sorted list of lists: E.g.,
Explanation / Answer
#include <iostream>
#include <string.h>
using namespace std;
// This function recursively removes duplicates
// and returns modified string
char* removeDup(char * str, int n)
{
int len = strlen(str);
int k = 0; // To store index of result
// Start from second character and add
// unique ones
for (int i=1; i< len; i++)
{
// If different, increment k and add
// previous character
if (str[i-1] != str[i])
str[k++] = str[i-1];
else
// Keep skipping (removing) characters
// while they are same.
while (str[i-1] == str[i])
i++;
}
// Add last character and terminator
str[k++] = str[i-1];
str[k] = '';
// Recur for string if there were some removed
// character
if (k != n)
removeDup(str, k);// Shlemial Painter's Algorithm
// If all characters were unique
else return str;
}
int main()
{
char str1[] = "geeksforgeeg";
cout << removeDup(str1, strlen(str1)) << endl;
char str2[] = "azxxxzy";
cout << removeDup(str2, strlen(str2)) << endl;
char str3[] = "caaabbbaac";
cout << removeDup(str3, strlen(str3)) << endl;
char str4[] = "gghhg";
cout << removeDup(str4, strlen(str4)) << endl;
char str5[] = "aaaacddddcappp";
cout << removeDup(str5, strlen(str5)) << endl;
char str6[] = "aaaaaaaaaa";
cout << removeDup(str6, strlen(str6)) << endl;
char str7[] = "qpaaaaadaaaaadprq";
cout << removeDup(str7, strlen(str7)) << endl;
char str8[] = "acaaabbbacdddd";
cout << removeDup(str8, strlen(str8)) << endl;
char str9[] = "acbbcddc";
cout << removeDup(str9, strlen(str9)) << endl;
}