/* This is one of the solution set to CareerCup 150 problems.
*
* Problem 1.2
*
* Method 1: Swap the nth and the (count-n)th elements.
* Notice: Under gcc, char* can't be modified, we can only manipulate the char array.
* Method 2: Use stack, first in, last out.
*
* Date: 02/18/2013
* Compile command: gcc-4.7 1.2.c
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void reverse(char str[]); //O(n) time, O(1) space
void reverseUseStack(char str[]); //O(n) time, O(n) space
int main(int argc, char *argv[])
{
char str[] = "1234abcd";
printf("Original string:\t%s\n",str);
//reverse(str);
reverseUseStack(str);
printf("Reversed string:\t%s\n",str);
return 0;
}
void reverse(char str[])
{
int len = strlen(str);
int i = 0;
int range = len - 1;
for(; range > 0; i++)
{
//loop 1:swap the first and the last element.
char tmp = str[i];
str[i] = str[i + range];
str[i + range] = tmp;
range -= 2;
}
}
void reverseUseStack(char str[])
{
int len = strlen(str);
char *strStack = malloc(len-1);
int index = 0;
for(len -= 1; len >=0; len--)
strStack[index++] = str[len];
strncpy(str, strStack, sizeof(str));
free(strStack);
strStack = NULL;
}
CareerCup 150题 C 语言版解答 1.2
原创
©著作权归作者所有:来自51CTO博客作者_Hector的原创作品,请联系作者获取转载授权,否则将追究法律责任
CareerCup 150 (Cracking the Coding Interview)是由 Google 的前员工撰写的,一本针对程序员面试的攻略,其中囊括了许多 IT 巨头的面试流程。这本书的题目难度适中,不是很难,但是想要一次把代码写正确,却需要多多练习。
这本书盛名已久,我就不多介绍了,书中提供的解答是 Java 版本的,我自己喜欢用 C,所以在这里记录 C 语言版本的解答,希望和大家多多交流。
------------------------------- 1.2.c -----------------------
题目我就不在这里写了,网上到处都有的。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
顺序表的动态分配(C语言版)
顺序表的动态分配代码实录
顺序表 动态分配 C语言 -
三子棋(C语言版)
没有撤退可言
i++ #include #define -
希尔排序c语言版
以前学数据结构的时候,因为老师的时间问题,导致这个算法没讲,今天有人问我这个算法问题,然后下去查
c语言 希尔排序 数据结构 算法 数组 -
【C语言版】扫雷游戏
【C语言版】扫雷游戏
#define #include 数组 C语言 -
栈的实现 c语言版
#include <stdlib.h>#define MIN_STACK_SIZE 1struct stack_t{ int length; int top; char *a
栈 c语言 数据结构 #include #define