Skip to content

Instantly share code, notes, and snippets.

View superlayone's full-sized avatar
👻

superlayone superlayone

👻
  • Ant Group,Zhima Enterprise Credit
  • Dragon Space-C,Zhejiang,Hangzhou,China
View GitHub Profile
@superlayone
superlayone / libfun.md
Last active August 29, 2015 14:03
strcpy & memcpy

##strcpy & memcpy

这两个库函数的实现应该算是比较简单的,但是竟然看到了很多不正确的版本,其实只要注意以下几点就OK了

  1. 参数判断
  2. 返回指针临时保存
  3. 地址重叠判断
  4. '\0'复制
 char* MemCpy(char* dst, const char* src, int len){
@superlayone
superlayone / assignment.md
Last active August 29, 2015 14:03
assignment operator

##赋值运算操作符

为如下类型添加赋值运算。

    class MyString
    {
    public:
        MyString(char* pData = NULL);
        MyString(const MyString str);
        ~MyString();
@superlayone
superlayone / plusplusoperator.md
Last active August 29, 2015 14:03
++ operator

##++前置和++后置

在对操作符++进行重载的时候有两个

    //前置
    Object operator ++();
    //后置
    Object operator ++(int);

其实,前置和后置是有着效率上的差别的,STL中类类型迭代中有很多的前置操作

@superlayone
superlayone / kmp.md
Last active August 29, 2015 14:03
KMP match

##KMP match

KMP算法的关键在于求算next[]数组的值,即求算模式串每个位置处的最长后缀与前缀相同的长度, 而求算next[]数组的值有两种思路,第一种思路是用递推的思想去求算,还有一种就是直接去求解(略)。

递推:

  • 根据定义next[0]=-1,假设next[j]=k, 即P[0...k-1]==P[j-k,j-1]
  • 若P[j]==P[k],则有P[0..k]==P[j-k,j],很显然,next[j+1]=next[j]+1=k+1
  • 若P[j]!=P[k],则可以把其看做模式匹配的问题,即匹配失败的时候,k值如何移动,显然k=next[k]
@superlayone
superlayone / atoi.md
Last active August 29, 2015 14:02
atoi v2

##继续来写一个自认为比较完美的atoi版本

直接上代码,关键点在处理溢出的地方!另外优化了判断的逻辑

    int StrToInt(const char* str)
    {
    	int n = 0;
    	int sign = 1;
    	int c;
@superlayone
superlayone / singleton.md
Last active August 29, 2015 14:02
C++ Singleton II

C++ Singleton

前一段时间面试豌豆荚的一道题,今天参见网上的一些博客,加上自己的理解写了一个觉得比较符合面试官当时意愿的Singleton

1. Singleton模板

Singleton.h 采用模板机制,使用产生确定类型的singleton类。 顺便说一下比较混淆的类模板和模板类。类模板首先是模板,用于产生类;而模板类是由这些类模板产生的类。比如:

@superlayone
superlayone / batfile.md
Last active August 29, 2015 14:02
Add UAC and Set Hostname UUID

Add UAC and Set Hostname UUID

标签(空格分隔): UAC Hostname UniqueName


####This code snap add a UAC privilege to .bat files

REM This batfile just add a UAC auth to .bat
reg add "HKEY_CLASSES_ROOT\batfile\shell\open" /v HasLUAShield /t REG_SZ
@superlayone
superlayone / simplifyPath.md
Last active August 29, 2015 14:01
Simplify Path

##UNIX路径简化

今天做了一道比较有意思的题目,处理UNIX路径的字符串操作。

path = "/home/", => "/home"

path = "/a/./b/../../c/", => "/c"

路径中/表示根,.表示当前目录,..表示父级目录

@superlayone
superlayone / divide.md
Last active August 29, 2015 14:01
Divide Two Integers

##Divide Two Integers

不使用乘法、除法以及取余操作对两个数执行除法操作

思路

a/b=exp( log(a/b) )=exp( log(a) - log(b) )

@superlayone
superlayone / sortlist.md
Last active August 29, 2015 14:01
链表O(n log n)排序

Sort List

Sort a linked list in O(n log n) time using constant space complexity.

思路