去哪网 2014.9.25 笔试题



第一题:

public static String overlay(String str, String overlay, int start, int end)
用字符串overlay覆盖字符串str从start到end之间的串。
如果str为null,则返回null
如果start或end小于0,则设为0
如果start大于end,则两者交换
如果start或end大于str的长度,则认为等于str的长度
举例(*表示任意):
StringUtils.overlay(null, *, *, *)        = null
StringUtils.overlay("","as",0,0))         = "as"
StringUtils.overlay("asdfgh","qq",2,5))        =    "asqqh"
StringUtils.overlay("asdfgh","qq",5,2))        =    "asqqh"
StringUtils.overlay("asdfgh","qq",-1,3))    =    "qqfgh"
StringUtils.overlay("asdfgh","qq",-1,-3))    =    "qqasdfgh"
StringUtils.overlay("asdfgh","qq",7,10))    =    "asdfghqq"
StringUtils.overlay("asdfgh","qq",0,8))        =    "qq"
StringUtils.overlay("asdfgh","qq",2,8))        =    "asqq"
StringUtils.overlay("asdfgh",null,2,5))        =    "ash"
StringUtils.overlay("asdfgh","",2,5))            =    "ash"

大意如此.

代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *overlay_fun(char *str, char *overlay, int start, int end)
{
  char *copy = malloc(strlen(str)*sizeof(char));
  int i = 0;
  int j = 0;
  if(strlen(str) == 0)
        return NULL;
  if(start < 0)
      start = 0;
  if(end < 0)
      end = 0;
  if(start > end)
     {
       int tmp;
       tmp = start;
       start = end;
       end = tmp;
      }

  if(start > strlen(str))
     start = strlen(str);
  if(end > strlen(str))
    end = strlen(str);

for(i = 0; i < start; i++)
  {
    copy[i] = str[i];

  }
  copy[i] = '\0';

  while(overlay[j] != '\0')
  {
    copy[i] = overlay[j];
    j++;
    i++;
  }

  while(str[end] != '\0')
  {
    copy[i] = str[end];
    end++;
    i++;
  }
  str = copy;

  return copy;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值