青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

qinzuoyan

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  8 Posts :: 0 Stories :: 16 Comments :: 0 Trackbacks

常用鏈接

留言簿(3)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

實現這個函數:
char* strrep(const char* src,  const char* from, const char* to)
{
}

將src中出現的所有from替換成to
時間:
10分鐘。

要求:
1. 功能正確,盡量高效
2.不能調用現有的正則表達式庫
3.可以使用strdup,malloc,realloc等函數,以及其他的c字符串 操作函數
4.估算你所寫算法的時間復雜度



#include 
<string.h>
#include 
<malloc.h>

/**
 * On success, strrep() returns a newly allocated string, which is constructed by replacing all substring `from' in `src' with `to'.
 * If `from' is a null string(with length of 1), then return a duplication of `src'.
 *
 * On failure
 *   ENOMEM Insufficient memory is available.
 * 
 * src is a null-terminated string.
 * from is a null-terminated string.
 * to is a null-terminated string.
 * 
 
*/
char* strrep(const char* src,  const char* from, const char* to)
{
  
char *des, *des_cur;
  
int from_len, to_len, src_len, des_len;
  
const char *src_cur, *src_end, *occ;
  
const char **marks; 
  
int mark_len, m, rep_count;
  
// prepare
  from_len = strlen(from);
  to_len 
= strlen(to);
  src_len 
= strlen(src);
  
if (from_len == 0)
    
return strdup(src);
  
// mark all occurence of `from' in `src'
  mark_len = 0x4;
  marks 
= (const char**)malloc(sizeof(char** mark_len);
  
if (marks == NULL)
    
return NULL;
  rep_count 
= 0;
  src_cur 
= src;
  
while((occ = strstr(src_cur, from)) != NULL) {
    rep_count
++;
    
// need more space for mark
    if (rep_count > mark_len) {
      mark_len 
<< 1;
      marks 
= (const char**)realloc(marks, mark_len);
      
if (marks == NULL)
        
return NULL;
    }
    
// mark the position
    marks[rep_count - 1= occ;
    
// find next occurence from the current position
    src_cur = occ + from_len;
  }
  
// construct new string
  des_len = src_len + (to_len - from_len) * rep_count;
  des 
= (char*)malloc(des_len + 1);
  
if (des == NULL)
    
return NULL;
  des_cur 
= des;
  src_cur 
= src;
  m 
= 0;
  
if (m < rep_count)
    occ 
= marks[m];
  
else
    occ 
= NULL;
  
while(*src_cur) {
    
if (src_cur != occ)
      
*des_cur++ = *src_cur++;
    
else {
      
// replace `from' with `to'
      strncpy(des_cur, to, to_len);
      src_cur 
+= from_len;
      des_cur 
+= to_len;
      
// more to replace?
      m++;
      
if (m < rep_count)
        occ 
= marks[m];
      
else
        occ 
= NULL;
    }
  }
  des_cur 
= '\0';
  free(marks);
  
return des;
}


posted on 2010-06-10 12:16 左言 閱讀(2370) 評論(1)  編輯 收藏 引用

Feedback

# re: 一道筆試題 - strrep()函數的實現[未登錄] 2010-06-11 10:58 expter
KMp不就行了嗎?  回復  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美成人| 亚洲伊人久久综合| 另类国产ts人妖高潮视频| 亚洲美女在线国产| 美女精品自拍一二三四| 久久国产福利国产秒拍| 午夜精品久久久久久| 亚洲视频导航| 亚洲直播在线一区| 午夜宅男欧美| 久久久综合激的五月天| 美国成人直播| 最新日韩欧美| 亚洲一二三四久久| 午夜精品一区二区三区在线视| 日韩午夜av电影| 亚洲视频你懂的| 久久精品综合网| 欧美日韩视频| 在线日韩中文字幕| 亚洲午夜精品久久久久久浪潮| 亚洲一级片在线观看| 午夜欧美精品| 亚洲国产成人精品女人久久久 | 亚洲愉拍自拍另类高清精品| 亚洲高清视频的网址| 亚洲欧洲视频在线| 欧美亚洲一级片| 亚洲电影免费观看高清完整版在线| 亚洲人成毛片在线播放| 欧美中文字幕视频| 欧美色精品在线视频| 黄色成人在线网站| 亚洲欧美日韩精品久久久| 亚洲黄色免费电影| 久久久久青草大香线综合精品| 欧美巨乳在线| 久久精品成人欧美大片古装| 欧美超级免费视 在线| 亚洲一区二区三区四区五区午夜 | 亚洲视频综合在线| 麻豆成人91精品二区三区| 亚洲欧美卡通另类91av| 国产精品高潮呻吟久久av黑人| 99精品国产高清一区二区 | 亚洲国产三级| 欧美大片专区| 欧美日韩第一区| 亚洲一区二区三区成人在线视频精品| 亚洲国产高清aⅴ视频| 欧美阿v一级看视频| 亚洲视频香蕉人妖| 午夜精品久久久久久久蜜桃app| 国产亚洲va综合人人澡精品| 国产日韩在线看片| 久久久青草婷婷精品综合日韩| 久久久久网站| 亚洲一区二区三区四区中文| 在线中文字幕日韩| 国产精品日韩久久久久| 久久国产精品亚洲va麻豆| 夜夜夜久久久| 亚洲精品国产精品国自产观看| 国产日韩欧美二区| 日韩视频免费大全中文字幕| 亚洲黄色免费电影| 在线综合亚洲欧美在线视频| 国产日韩欧美不卡| 国产精品久久久久久久久果冻传媒| 欧美激情综合网| 亚洲视频一区| 久久不见久久见免费视频1| 亚洲欧美色婷婷| 欧美激情四色| 亚洲精品一区二区三区蜜桃久| 久久综合免费视频影院| 欧美日韩精品| 久久视频一区| 欧美精品电影在线| 欧美亚洲视频| 欧美午夜激情视频| 999在线观看精品免费不卡网站| 久久亚洲不卡| 欧美深夜影院| 亚洲人成在线播放网站岛国| 久久久久国产免费免费| 在线一区视频| 欧美精品久久99久久在免费线| 久久电影一区| 午夜国产欧美理论在线播放| 国产精品久久久久99| 91久久中文| 亚洲欧美影院| 99精品欧美一区二区三区综合在线| 欧美中文字幕视频| 欧美在线视频免费| 国产一区久久| 亚洲欧美美女| 久久精品国产免费| 国产综合在线看| 久久综合999| 久久五月激情| 亚洲专区在线视频| 国产视频一区二区在线观看| 小处雏高清一区二区三区| 麻豆国产精品777777在线 | 尤物精品在线| 久久综合婷婷| 国产精品一级在线| 久久精品视频va| 亚洲国产精品一区二区www在线 | 欧美国产精品v| 香蕉尹人综合在线观看| 亚洲毛片在线观看.| 性欧美大战久久久久久久免费观看 | 狂野欧美一区| 亚洲天堂成人在线视频| 国产香蕉97碰碰久久人人| 亚洲在线视频免费观看| 亚洲精品日本| 黄色精品一区| 国产欧美日本一区二区三区| 久久精品人人爽| 欧美亚洲综合久久| 亚洲国产精品成人| 国产美女一区二区| 国产午夜精品理论片a级探花| 蜜臀av性久久久久蜜臀aⅴ四虎| 亚洲欧美激情诱惑| 亚洲一区二区三区视频| 亚洲伦伦在线| 在线亚洲精品福利网址导航| 欧美日韩国产一区精品一区| 亚洲天堂av图片| 午夜精品福利电影| 欧美一区二区日韩| 欧美在线免费一级片| 久久综合图片| 亚洲激情小视频| 最新亚洲电影| 欧美亚洲免费高清在线观看| 午夜免费日韩视频| 亚洲深夜福利在线| 亚洲精选中文字幕| 亚洲视频久久| 亚洲图片在线观看| 欧美另类在线播放| 国产主播喷水一区二区| 最新国产精品拍自在线播放| 亚洲视频www| 亚洲第一搞黄网站| 久久人人精品| 国产主播一区二区三区| 亚洲免费不卡| 欧美国产视频在线观看| 亚洲午夜久久久久久久久电影院| 久久久91精品国产| 国产模特精品视频久久久久| 亚洲春色另类小说| 欧美视频在线观看免费| 悠悠资源网久久精品| 老鸭窝亚洲一区二区三区| 99精品久久久| 欧美激情中文字幕一区二区| 伊人精品视频| 免费在线视频一区| 欧美另类一区二区三区| 亚洲毛片av在线| 亚洲欧洲三级电影| 欧美日韩免费网站| 亚洲字幕一区二区| 久久综合综合久久综合| 伊大人香蕉综合8在线视| 裸体女人亚洲精品一区| 久久国产视频网站| 中日韩视频在线观看| 亚洲精品乱码久久久久久黑人| 欧美国产一区二区在线观看| 亚洲精品乱码久久久久久久久 | 欧美日韩亚洲三区| 午夜久久久久久| 亚洲欧美中文日韩v在线观看| 国产欧美日本| 欧美成人按摩| 国产精品大片免费观看| 欧美成熟视频| 国产精品久久一卡二卡| 欧美a级在线| 国产精品夜夜夜| 亚洲理伦电影| 免费欧美视频| 久久综合色天天久久综合图片| 欧美成人精品1314www| 欧美中文字幕第一页| 国产精品毛片a∨一区二区三区|国| 久久亚洲精品一区二区| 欧美精品久久一区二区| 久久青青草原一区二区| 久久亚洲国产精品一区二区| 久久久久久亚洲精品杨幂换脸 |