劍指offer_05 替換空格
阿新 • • 發佈:2022-04-07
// char *s = “hello”;後,不能使用s[0]=‘a’;語句進行賦值。這是將提示記憶體不能為"written"
// C語言還是太考驗細節的東西了,只要有一步有一點點不對就會報錯(堆溢位)
// 因為c語言不能像別的語言一樣,在原地擴充陣列,所以只能犧牲時間複雜度
1 char* replaceSpace(char* s){ 2 // 統計空格數量 3 int count = 0; 4 int len = strlen(s); 5 for (int i = 0; i < len; i++) { 6 if (*(s+i) == '') { 7 count++; 8 } 9 } 10 11 //為新陣列分配空間 12 int newLen = len + count * 2; 13 // 因為c語言不能像別的語言一樣,在原地擴充陣列,所以只能犧牲時間複雜度 14 char* result = malloc(sizeof(char) * newLen + 1); 15 //填充新陣列並替換空格 16 for (int i = len - 1, j = newLen - 1; i >= 0; i--, j--) { 17 if(*(s+i) != ' ') { 18 *(result+j) = *(s+i); 19 } else { 20 *(result+j) = '0';j--; 21 *(result+j) = '2';j--; 22 *(result+j) = '%'; 23 } 24 } 25 result[newLen] = '\0'; 26 27 return result; 28 }