sundeepblue
4/25/2014 - 6:28 PM

apple interview, duplicate a letter in string

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;
}