apple interview, duplicate a letter in string
// "waot" -> "waoot"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
char* duplicate_letter(char *str, char c) {
if(!str) return NULL;
int n = strlen(str);
int count = 0;
for(int i=0; i<n; i++) {
if(str[i] == c) count++;
}
int new_length = 2 * count + n;
char *res = (char*)malloc(new_length * sizeof(char));
int tail = 0;
for(int i=0; i<n; i++) {
res[tail++] = str[i];
if(str[i] == c) {
res[tail++] = str[i];
}
}
return res;
}
int main() {
char *s = "abbaaaaaab";
char *r = duplicate_letter(s, 'b');
cout << r << endl;
return 0;
}
char* change(char *str) {
int count = 0;
for(char *p=str; *p; p++)
if(*p == 'o') count++;
int new_len = strlen(str) + count + 1; // + 1 or not + 1?
char *res = (char*)malloc(new_len * sizeof(char));
char *q = res;
for(char *p=str; *p; p++) {
if(*p != 'o') *q++ = *p;
else {
*q++ = *p;
*q++ = *p;
}
}
*q = '\0';
return res;
}