Skip to content

Instantly share code, notes, and snippets.

@nealhu
Last active August 29, 2015 14:02
Show Gist options
  • Save nealhu/15b80e2e3224e30127a0 to your computer and use it in GitHub Desktop.
Save nealhu/15b80e2e3224e30127a0 to your computer and use it in GitHub Desktop.
CC_1_2
// Cracking the Coding Interview
// 1.2 Implement a function void reverse(char* str) in C or C++ which reverses a null-terminated string.
#include <assert.h>
#include <iostream>
void reverse(char* str) {
int len = 0;
char *cur = str;
char tmp = ' ';
if (cur == NULL) return;
while(*cur != '\0') {
cur++;
len++;
}
for(int i = 0; i < len/2; i++) {
tmp = str[i];
str[i] = str[len-i-1];
str[len-i-1] = tmp;
}
return;
}
bool arrayCompare(char *str1, char *str2) {
if (str1 == NULL && str2 == NULL) return 1;
if (str1 == NULL || str2 == NULL || sizeof(*str1) != sizeof(*str2)) return 0;
int len = sizeof(*str1);
for(int i = 0; i<len; i++) {
if (str1[i] != str2[i]) {
return 0;
}
}
return 1;
}
int main() {
char test1[] = "Hello";
char rtest1[] = "olleH";
char test2[] = "";
char test3[] = "Hell";
char rtest3[] = "lleH";
char *test4 = NULL;
char test5[] = "\0";
char test6[] = " ";
reverse(test1);
reverse(test2);
reverse(test3);
reverse(test4);
reverse(test5);
reverse(test6);
assert(arrayCompare(test1, rtest1));
assert(arrayCompare(test2, test2));
assert(arrayCompare(test3, rtest3));
assert(arrayCompare(test4, test4));
assert(arrayCompare(test5, test5));
assert(arrayCompare(test6, test6));
std::cout<<"Tests passed"<<std::endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment