日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

面试题4:替换空格

發布時間:2025/7/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 面试题4:替换空格 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

知識點

C/C++中的每個字符串都以字符'\0'作為結尾

為了節省內存,C/C++把常量字符串放到單獨的一個內存區域,當幾個指針賦值給相同的常量字符串,它們實際會指向相同的地址

char str1[] = "hello";char str2[] = "hello";char *str3 = "hello";char *str4 = "hello";

char *指向的地址是相同的

數組是分配空間后再將內容拷貝到數組中的,指針直接指向常量字符串

面試題4

本題心得是從尾到頭復制可以提高效率,其他字符串問題也可以考慮從尾到頭復制

自己開始寫的實現寫成string[i] = ' ', 一定要注意==,另外本題是在原字符串上做替換

書中示例:

1 /*length 為字符數組string的總容量*/ 2 void ReplaceBlank(char string[], int length) 3 { 4 if(string == NULL && length <= 0) 5 return; 6 7 /*originalLength 為字符串string的實際長度*/ 8 int originalLength = 0; 9 int numberOfBlank = 0; 10 int i = 0; 11 while(string[i] != '\0') 12 { 13 ++ originalLength; 14 15 if(string[i] == ' ') 16 ++ numberOfBlank; 17 18 ++ i; 19 } 20 21 /*newLength 為把空格替換成'%20'之后的長度*/ 22 int newLength = originalLength + numberOfBlank * 2; 23 if(newLength > length) 24 return; 25 26 int indexOfOriginal = originalLength; 27 int indexOfNew = newLength; 28 while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) 29 { 30 if(string[indexOfOriginal] == ' ') 31 { 32 string[indexOfNew --] = '0'; 33 string[indexOfNew --] = '2'; 34 string[indexOfNew --] = '%'; 35 } 36 else 37 { 38 string[indexOfNew --] = string[indexOfOriginal]; 39 } 40 41 -- indexOfOriginal; 42 } 43 }

?完整代碼:

1 // ReplaceBlank.cpp : Defines the entry point for the console application. 2 // 3 4 // 《劍指Offer——名企面試官精講典型編程題》代碼 5 // 著作權所有者:何海濤 6 7 #include "stdafx.h" 8 #include <string> 9 10 /*length 為字符數組string的總容量*/ 11 void ReplaceBlank(char string[], int length) 12 { 13 if(string == NULL && length <= 0) 14 return; 15 16 /*originalLength 為字符串string的實際長度*/ 17 int originalLength = 0; 18 int numberOfBlank = 0; 19 int i = 0; 20 while(string[i] != '\0') 21 { 22 ++ originalLength; 23 24 if(string[i] == ' ') 25 ++ numberOfBlank; 26 27 ++ i; 28 } 29 30 /*newLength 為把空格替換成'%20'之后的長度*/ 31 int newLength = originalLength + numberOfBlank * 2; 32 if(newLength > length) 33 return; 34 35 int indexOfOriginal = originalLength; 36 int indexOfNew = newLength; 37 while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) 38 { 39 if(string[indexOfOriginal] == ' ') 40 { 41 string[indexOfNew --] = '0'; 42 string[indexOfNew --] = '2'; 43 string[indexOfNew --] = '%'; 44 } 45 else 46 { 47 string[indexOfNew --] = string[indexOfOriginal]; 48 } 49 50 -- indexOfOriginal; 51 } 52 } 53 54 void Test(char* testName, char string[], int length, char expected[]) 55 { 56 if(testName != NULL) 57 printf("%s begins: ", testName); 58 59 ReplaceBlank(string, length); 60 61 if(expected == NULL && string == NULL) 62 printf("passed.\n"); 63 else if(expected == NULL && string != NULL) 64 printf("failed.\n"); 65 else if(strcmp(string, expected) == 0) 66 printf("passed.\n"); 67 else 68 printf("failed.\n"); 69 } 70 71 // 空格在句子中間 72 void Test1() 73 { 74 const int length = 100; 75 76 char string[length] = "hello world"; 77 Test("Test1", string, length, "hello%20world"); 78 } 79 80 // 空格在句子開頭 81 void Test2() 82 { 83 const int length = 100; 84 85 char string[length] = " helloworld"; 86 Test("Test2", string, length, "%20helloworld"); 87 } 88 89 // 空格在句子末尾 90 void Test3() 91 { 92 const int length = 100; 93 94 char string[length] = "helloworld "; 95 Test("Test3", string, length, "helloworld%20"); 96 } 97 98 // 連續有兩個空格 99 void Test4() 100 { 101 const int length = 100; 102 103 char string[length] = "hello world"; 104 Test("Test4", string, length, "hello%20%20world"); 105 } 106 107 // 傳入NULL 108 void Test5() 109 { 110 Test("Test5", NULL, 0, NULL); 111 } 112 113 // 傳入內容為空的字符串 114 void Test6() 115 { 116 const int length = 100; 117 118 char string[length] = ""; 119 Test("Test6", string, length, ""); 120 } 121 122 //傳入內容為一個空格的字符串 123 void Test7() 124 { 125 const int length = 100; 126 127 char string[length] = " "; 128 Test("Test7", string, length, "%20"); 129 } 130 131 // 傳入的字符串沒有空格 132 void Test8() 133 { 134 const int length = 100; 135 136 char string[length] = "helloworld"; 137 Test("Test8", string, length, "helloworld"); 138 } 139 140 // 傳入的字符串全是空格 141 void Test9() 142 { 143 const int length = 100; 144 145 char string[length] = " "; 146 Test("Test9", string, length, "%20%20%20"); 147 } 148 149 int _tmain(int argc, _TCHAR* argv[]) 150 { 151 Test1(); 152 Test2(); 153 Test3(); 154 Test4(); 155 Test5(); 156 Test6(); 157 Test7(); 158 Test8(); 159 Test9(); 160 161 return 0; 162 } View Code

?

轉載于:https://www.cnblogs.com/raichen/p/5631950.html

總結

以上是生活随笔為你收集整理的面试题4:替换空格的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 爱久久视频| 影音资源av| 欧美亚洲影院 | 成人做爰9片免费视频 | 中国爆后菊女人的视频 | 免费看国产黄色 | av免费看在线 | 一道本不卡视频 | 纯爱无遮挡h肉动漫在线播放 | 村姑电影在线播放免费观看 | 亚洲欧美第一页 | 午夜精品福利电影 | 久热这里只有精品6 | 天天干天天添 | 又黄又爽一区二区三区 | 国产精品情侣呻吟对白视频 | 成人在线高清 | 法国空姐在线观看完整版 | 国产精品伦一区二区三级视频 | 熟妇高潮一区二区三区 | 亚洲性欧美 | 九九热精品在线 | 久久久久久不卡 | 亚洲黄片一区二区三区 | 免费精品在线观看 | 天天操,夜夜操 | 在线免费视频一区 | 九九少妇| 综合狠狠 | 欧美一级一区 | 特种兵之深入敌后高清全集免费观看 | 国产精品无码一区二区三区 | 黄色一级视屏 | 亚洲精品97久久中文字幕无码 | 日韩一区久久 | 特级西西www444人体聚色 | 999av视频 | 视频久久精品 | 国产精品www色诱视频 | 粗大的内捧猛烈进出在线视频 | 波多野结衣一级 | 精品无码一区二区三区在线 | 欧美成人aaa | 国产精品无码人妻一区二区在线 | 日韩精品电影一区二区 | 久久1234| 视频一区国产 | 香蕉视频ap | 老色驴综合网 | 波多野结衣家庭主妇 | 天天干,天天爽 | 无码精品人妻一区二区三区湄公河 | 99视频国产精品 | 久久久久久久久久久久久久 | 君岛美绪在线 | 欧美伊人影院 | av在线网站观看 | 国产精品久久久久久久蜜臀 | 久操精品在线 | 国产色中色 | 亚洲免费网站在线观看 | 大黄一级片| 91在线视频导航 | 男女日批在线观看 | 无码一区二区三区视频 | 日干夜干天天干 | 少妇性色av| 久久涩涩 | 国外亚洲成av人片在线观看 | 成人av在线网址 | eeuss日韩| 国产成人精品亚洲日本在线观看 | 亚洲一区二区三区免费观看 | 美女露出让男生揉的视频 | 中国丰满老太hd | a天堂在线观看 | 性中国古装videossex | 日韩国产欧美视频 | 国产精品18久久久久久vr下载 | 影音先锋丝袜美腿 | 国产精品无码在线 | 国产69页 | 亚洲国产精品久久久久爰性色 | 精品91久久久 | 欧美一级视频 | 国产经典一区 | 黄色av网址在线观看 | 成人黄色一区二区三区 | 精品亚洲精品 | 亚洲人性生活视频 | 97视频在线 | 精品人妻一区二区三区日产 | 久久动态图 | 陪读偷伦初尝小说 | av激情四射| 亚洲av无码片一区二区三区 | 国产精品久久久久久久久久免费看 | 日韩在线观看免费高清 | 91免费版黄 |