编写一个函数,实现字符串中,单个字符的删除

第三题:假设字符串 "cabcdefcgchci" ,那么要求你写一个函数,把该字符串中所有的字符 ’c’ 删除掉。那么结果应该是 "abdefghi"。


char * DeleteChararcter_00(char str[],char c)


要求:

时间复杂度为O(n),空间复杂度O(1)

解答:

char* DeleteChararcter(char str[], char c)
{
  char* ret = str; // 1分
  
  if( str != NULL ) // 3分
  {
    char* p = str;
    
    while( *str ) // 3分
    {
      if( *str != c ) // 2分
      {
        *p = *str;
        
        p++;
      }
      
      str++; //2分
    }
    
    *p = *str; // 3分    最后一句赋值 是加上结束符 0,否则你返回的就不是字符串了

  }
  
  return ret; //1分
}

对于这种笔试面试题 大家一定尽量不要用库函数
大家要记得 对于考察这种基本的字符串处理类型的考题 都是考察编程功底  所以大家不要用库函数
对于明显考察数据结构或者某些相对大型问题的解法时  可以使用库函数  

第二题
代码
inta[3][2]={1,2,3,4,5,6};
int*p[3];
p[0]=a[1];
问*(p[0]+1)是个什么东西


分析后 这个题 我觉得还是 4

p[0]=a[1];

也就是说 p[0]保存的是 第二而行的首地址 即指向 3 

那么第二行的首地址 + 1 就是 3 的下个元素 

即4

第一题
函数原型void hello(int a,int b=7,char* pszC="*"),下面的函数调用钟,属于
不合法调用的是:
A hello(5)
B.hello(5,8)
C.hello(6,"#")
D.hello(0,0,"#")

解答:

对于这种题目 简单的基础题 笔试会考的

默认函数参数的匹配规则是
从最左边依次匹配 因此C不对 第二个实参是const char*而 形参类型为 int  无法匹配 所以错了


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值