亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++實現將一個字符串中的字符替換成另一個字符串的方法

2020-01-26 15:18:03
字體:
來源:轉載
供稿:網友

本文實例講述了C++實現將一個字符串中的字符替換成另一個字符串的方法,分享給大家供大家參考。具體方法如下:

題目要求:

原地實現字符串中的每個空格替換成"%20",例如輸入"We are happy", 輸出"We%20are%20happy"
被替換的字符串當然不僅僅是空格,上面只是個例子
這是道很好的題目,也是百度面試中的一道題,題目不難,但是問題得考慮全面。這里給出如下實現代碼:

#include <iostream>#include <vector>#include <cassert>using namespace std;int findNumberFirst(const char *str, const char *dest, vector<int>& pvec){ if (str == NULL || dest == NULL) return 0; int pos = 0; int lenStr = strlen(str); int lenDest = strlen(dest); if (lenStr < lenDest) return 0; int count = 0; while (pos <= lenStr - lenDest) { if (strncmp(str + pos, dest, strlen(dest)) == 0) {  pvec.push_back(pos);  pos += lenDest;  count++; } else {  pos++; } } return count;}int findNumberLast(const char *str, const char *dest, vector<int> &pvec){ if (str == NULL || dest == NULL) return 0; int strLen = strlen(str); int destLen = strlen(dest); if (strLen < destLen) return 0; int pos = 0; while (pos <= strLen - destLen) { if (strncmp(str + pos, dest, strlen(dest)) == 0) {  pos += destLen;  pvec.push_back(pos - 1); } else {  pos++; }  } return pvec.size();}void replaceArray(char *str, const char *src, const char *dest){ if (str == NULL || src == NULL || dest == NULL) return; vector<int> pvec; int strLen = strlen(str); int srcLen = strlen(src); int destLen = strlen(dest); if (strLen < srcLen) return; int posBefore = 0; int posAfter = 0; if (srcLen < destLen) { int count = findNumberLast(str, src, pvec); if (count <= 0)  return;  posAfter = strLen + count * (destLen - srcLen) - 1; posBefore = strLen - 1; while (count > 0 && posBefore >= 0) {  if (pvec[count - 1] == posBefore)  {  posAfter -= destLen;  strncpy(str + posAfter + 1, dest, strlen(dest));  count--;  posBefore--;  }  else  {  str[posAfter--] = str[posBefore--];  } } } else if (strLen > destLen) { int count = findNumberFirst(str, src, pvec); if (count <= 0)  return; posAfter = 0; posBefore = 0; int i = 0; while (count >= 0 && posBefore < strLen) {  if (count > 0 && pvec[i] == posBefore)  {  strncpy(str + posAfter, dest, strlen(dest));  posAfter += destLen;  count--;  posBefore += srcLen;  i++;  }  else  {  str[posAfter++] = str[posBefore++];  } } str[posAfter] = '/0'; }}void main(){  char *str = new char[100]; if (str == NULL) return; memset(str, '/0', 100); const char *src = " "; const char *dest = "%20";//case1: 只有1個空格 strcpy(str, " "); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case2: 兩個空格 strcpy(str, " "); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case3: 正常情況 strcpy(str, "we are happy"); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case3: 空格在前 strcpy(str, " we are happy"); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case4: 空格在后 strcpy(str, "we are happy "); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case4: 沒空格 strcpy(str, "wearehappy"); replaceArray(str, src, dest); cout << "str: " << str << endl; replaceArray(str, dest, src); cout << "str: " << str << endl;//case5: 兩邊一樣 strcpy(str, "we are happy"); replaceArray(str, src, dest); cout << "str: " << str << endl; src = "%20"; assert(dest == "%20"); replaceArray(str, dest, src); cout << "str: " << str << endl;}

分析上述代碼,很有意思的一個情況是srcLen和destLen或大或小的情形,其邊界條件的判定不一樣。比如we are happy為例子,從后往前拷貝時,count=2。

在count=0時,恰好將最前面的空格替換完成,we則不用重復拷貝。但是對于從前往后拷貝,當count=0時,最后面的happy將不會被拷貝。

希望本文所述實例對大家C++程序算法設計的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
中文字幕精品网| 欧美激情亚洲一区| 国产成人精品久久二区二区| 福利精品视频在线| 久久久久久av| 精品久久香蕉国产线看观看gif| 97精品一区二区三区| 日韩欧美精品网站| 欧美日韩ab片| 韩国视频理论视频久久| 中国china体内裑精亚洲片| 91久久精品一区| 国内伊人久久久久久网站视频| 最新国产成人av网站网址麻豆| 亚洲精品v欧美精品v日韩精品| 欧美中文字幕在线| 国产一区二区日韩| 91精品国产电影| 在线观看中文字幕亚洲| 久久久中文字幕| 国产日本欧美一区二区三区在线| 久久成人国产精品| 亚洲成年人影院在线| 亚洲电影av在线| 国产精品流白浆视频| 成人国产在线视频| 在线观看中文字幕亚洲| 亚洲字幕一区二区| 在线观看日韩专区| 在线丨暗呦小u女国产精品| 精品动漫一区二区| 欧美性xxxx极品hd欧美风情| 久久视频国产精品免费视频在线| 91精品国产高清久久久久久久久| 亚洲成人精品在线| 一区二区三区回区在观看免费视频| 久久夜色撩人精品| 久久在精品线影院精品国产| 久久99热精品这里久久精品| www.欧美三级电影.com| 欧美一区二区三区免费观看| 久久综合伊人77777| 一本色道久久综合亚洲精品小说| 亚洲欧美www| 亚洲精品视频免费| www.久久色.com| 亚洲午夜av久久乱码| 欧美国产视频一区二区| 久久综合伊人77777蜜臀| 亚洲电影免费观看高清完整版在线观看| 97人洗澡人人免费公开视频碰碰碰| 久久久999成人| 日韩天堂在线视频| 欧美精品久久久久久久免费观看| 精品偷拍一区二区三区在线看| 日韩毛片在线观看| 国产噜噜噜噜噜久久久久久久久| 欧美一区二区三区免费观看| 国产成人精品网站| 亚洲最新视频在线| 97在线观看免费| 国产伊人精品在线| 日韩视频中文字幕| 精品一区精品二区| 欧美限制级电影在线观看| 欧美最近摘花xxxx摘花| 久久亚洲精品小早川怜子66| 91最新在线免费观看| 欧美黑人巨大xxx极品| 欧美激情免费观看| 欧美激情一级精品国产| 久久久久久成人| 欧美激情xxxxx| 91欧美精品午夜性色福利在线| 欧美日韩成人精品| 91精品成人久久| 久久精品国产成人精品| 奇米一区二区三区四区久久| 欧美精品激情blacked18| 欧美黑人xxxⅹ高潮交| 国产在线日韩在线| 亚洲网在线观看| 成人黄色生活片| 亚洲香蕉伊综合在人在线视看| 欧美电影免费在线观看| 亚洲精品成a人在线观看| 精品精品国产国产自在线| 色噜噜久久综合伊人一本| 欧美国产高跟鞋裸体秀xxxhd| 亚洲jizzjizz日本少妇| 久久久久久网站| 96pao国产成视频永久免费| 久久精品中文字幕免费mv| 久久精品国产成人精品| 亚洲午夜激情免费视频| 欧美日韩免费区域视频在线观看| 日韩欧美在线视频免费观看| 日韩精品福利在线| 欧美高清视频在线播放| 国产精品久久久久久久电影| 九九热精品在线| 久久天天躁夜夜躁狠狠躁2022| 日韩男女性生活视频| 欧美最近摘花xxxx摘花| 三级精品视频久久久久| 亚州av一区二区| 国产精品一区二区三区免费视频| 亚洲aa在线观看| 九九综合九九综合| 人九九综合九九宗合| 日本一区二区不卡| 91亚洲国产成人精品性色| 日韩精品极品在线观看播放免费视频| 日韩美女在线播放| 高清一区二区三区四区五区| 色樱桃影院亚洲精品影院| 国产亚洲美女久久| 中文字幕久久亚洲| 中文字幕少妇一区二区三区| 国产一区二区三区高清在线观看| 欧美理论电影网| 伊人一区二区三区久久精品| 日韩高清有码在线| 人人澡人人澡人人看欧美| 成人黄色av免费在线观看| 久久久视频免费观看| 久久精品亚洲精品| 国产丝袜视频一区| 欧美成人免费全部观看天天性色| 日韩视频在线观看免费| 国产精品网站视频| 日韩av成人在线观看| 国产精品久久国产精品99gif| 亚洲人成网站777色婷婷| 国产一区二区三区直播精品电影| 亚洲伊人久久大香线蕉av| 国产欧美精品久久久| 亚洲色图美腿丝袜| 欧美国产日韩在线| 欧美精品videossex88| 97视频在线观看视频免费视频| 91高清视频免费| 亚洲xxxxx电影| 美日韩精品免费观看视频| 亚洲国产欧美一区二区三区同亚洲| 国产成人久久久| 欧美电影免费观看电视剧大全| 97avcom| 91在线视频免费| 久久中文字幕国产| 亚洲人成网站在线播| 2019亚洲日韩新视频| 亚洲精品免费一区二区三区| 欧美巨乳在线观看| 国产裸体写真av一区二区| 午夜免费在线观看精品视频| 91超碰中文字幕久久精品| 欧美高清自拍一区| 欧美多人爱爱视频网站| 亚洲缚视频在线观看| 最好看的2019的中文字幕视频| 久久久久久97| 18性欧美xxxⅹ性满足| 欧美日韩ab片|