程序员编程艺术4:现场编写类似strstr/strcpy/strpbrk的函数

第一节、字符串查找
1.1题目描述:
给定一个字符串A,要求在A中查找一个子串B。

如A="ABCDF",要你在A中查找子串B=“CD”。

思路:

(1)循环A字符串,时间复杂度(n×m)

(2)KMP匹配算法,时间复杂度(n+m)

1.2、题目描述

在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。 

思路:hasnTable,字符作为key,次数为值,最后按字符顺序循环hashtable,输出次数为1的。也可以用数字代替hashTable。

第二节、字符串拷贝
题目描述:
要求实现库函数strcpy,
原型声明:extern char *strcpy(char *dest,char *src); 
功能:把src所指由NULL结束的字符串复制到dest所指的数组中。  
说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。  
返回指向dest的指针。

思路:

//得2分       
void strcpy( char *strDest, char *strSrc )       
{       
    while( (*strDest++ = * strSrc++) != '\0' );       
}        
  
//得4分       
void strcpy( char *strDest, const char *strSrc )        
{       
    //将源字符串加const,表明其为输入参数,加2分       
    while( (*strDest++ = * strSrc++) != '\0' );       
}        
  
//得7分       
void strcpy(char *strDest, const char *strSrc)        
{       
    //对源地址和目的地址加非0断言,加3分       
    assert( (strDest != NULL) && (strSrc != NULL) );       
    while( (*strDest++ = * strSrc++) != '\0' );       
}        
  
//得9分       
//为了实现链式操作,将目的地址返回,加2分!       
char * strcpy( char *strDest, const char *strSrc )        
{       
    assert( (strDest != NULL) && (strSrc != NULL) );       
    char *address = strDest;        
    while( (*strDest++ = * strSrc++) != '\0' );        
    return address;       
}      
  
//得10分,基本上所有的情况,都考虑到了    
//如果有考虑到源目所指区域有重叠的情况,加1分!       
char * strcpy( char *strDest, const char *strSrc )        
{       
    if(strDest == strSrc) { return strDest; }    
    assert( (strDest != NULL) && (strSrc != NULL) );       
    char *address = strDest;        
    while( (*strDest++ = * strSrc++) != '\0' );        
    return address;       
}  



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断路器保护灵敏度校验整改及剩余电流监测试点应用站用交流系统断

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值