面试题4:替换空格
1 bool Replace(char *String, int length) 2 { 3 int index; 4 int charNum; 5 int blankNum; 6 char *workPtr; 7 8 if(NULL == String) 9 { 10 return false; 11 } 12 13 charNum = 0; 14 blankNum = 0; 15 workPtr = String; 16 while((*workPtr) != '\0') 17 { 18 if((*workPtr++) == ' ') 19 { 20 blankNum++; 21 } 22 charNum++; 23 } 24 25 if(length < (charNum + 2*blankNum)) 26 { 27 return false; 28 } 29 30 for(index = charNum; index >= 0; index--) 31 { 32 if(*workPtr-- != ' ') 33 { 34 *(String + index + 2*blankNum) = *(String + index); 35 } 36 else 37 { 38 *(String + index + 2*blankNum) = '0'; 39 *(String + index + 2*blankNum - 1) = '2'; 40 *(String + index + 2*blankNum - 2) = '%'; 41 blankNum--; 42 } 43 } 44 return true; 45 }
相关题目:
1 bool arrayMerge(int *arrayA, int arrayALenth, int *arrayB, int arrayBLenth) 2 { 3 int mergeLenth = arrayALenth + arrayBLenth; 4 5 if(NULL == arrayA) 6 { 7 return false; 8 } 9 if(NULL == arrayB) 10 { 11 return true; 12 } 13 14 arrayALenth--; 15 arrayBLenth--; 16 mergeLenth--; 17 18 while((arrayALenth >= 0) &&(arrayBLenth >= 0)) 19 { 20 if(arrayA[arrayALenth] > arrayB[arrayBLenth]) 21 { 22 arrayA[mergeLenth--] = arrayA[arrayALenth--]; 23 } 24 else if(arrayA[arrayALenth] < arrayB[arrayBLenth]) 25 { 26 arrayA[mergeLenth--] = arrayB[arrayBLenth--]; 27 } 28 else 29 { 30 arrayA[mergeLenth--] = arrayB[arrayBLenth--]; 31 arrayA[mergeLenth--] = arrayA[arrayALenth--]; 32 } 33 } 34 35 if(arrayALenth < 0) 36 { 37 while(arrayBLenth >= 0) 38 { 39 arrayA[mergeLenth--] = arrayB[arrayBLenth--]; 40 } 41 } 42 else 43 { 44 while(arrayALenth >= 0) 45 { 46 arrayA[mergeLenth--] = arrayB[arrayALenth--]; 47 } 48 } 49 50 return true; 51 }