Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- void assertEquals(char*, char*);
- char* reverse(char*);
- char* reverse_helper(char* s, int, int);
- // clang -o out main.c && ./out
- int main() {
- assertEquals("", reverse(""));
- assertEquals("a", reverse("a"));
- char in[] = "ab";
- char out[] = "ba";
- assertEquals(out, reverse(in));
- char in2[] = "cba";
- char out2[] = "abc";
- assertEquals(out2, reverse(in2));
- return 0;
- }
- char* reverse(char* s) {
- return reverse_helper(s, 0, strlen(s) - 1);
- }
- char* reverse_helper(char* s, int curr, int end) {
- if (curr == end || end < curr) {
- return s;
- }
- char temp = s[curr];
- s[curr] = s[end];
- s[end] = temp;
- return reverse_helper(s, curr + 1, end - 1);
- }
- void assertEquals(char* s1, char* s2) {
- if (strcmp(s1, s2) != 0) {
- printf("FAIL: Expected '%s', Actual '%s'\n", s1, s2);
- } else {
- printf("SUCC: Expected '%s', Actual '%s'\n", s1, s2);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement