1. 程式人生 > 其它 >劍指offer_05 替換空格

劍指offer_05 替換空格

// 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 }