剑指offer面试题4 替换空格(c)
来源:互联网 发布:oa软件开发 编辑:程序博客网 时间:2024/06/03 14:51
本题最大的困难是如何在不新建新的数组下完成空格替换,主要考察数组指针的运用
思路:(1)找出字符串空格的长度,从而确定新的子串尾指针的位置所在;
(2)通过遍历找出空格,string[indexOfNew--]依次附上%20三个字符,indexOfOriginal--
注:并没有通过实际指针而是通过字符串下标操作,起始时均指向末尾位置
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 /* 5 *Author xsf 6 *剑指offer,替换空格 7 */ 8 //求出传入数组的空格长度 9 int GetBankLen(char str[])10 {11 int BankNum = 0;12 char *p = str;13 while(*p!='\0')14 {15 if(*p==' ')16 BankNum++;17 p++;18 }19 return BankNum;20 }21 /*置换空格的函数22 length是字符数组string的总容量23 */24 void ReplaceBlank(char string[],int length)25 {26 if(string==NULL||length<=0)//安全性判断27 return;28 int BankNum = GetBankLen(string);//获取输入string的空格数目29 int newLength = length + BankNum*2; //移动数组后的总长度30 // char *str1 = string+length-1;//第一个指针指向数组的最后\0位置31 // if(*str1 =='\0')32 // printf("指向了最后的\0");33 // char *str2 = string+newLength-1;//第二个指针指向替换后的最后\0位置34 /*移动指针*/35 int indexOfOriginal = length;36 int indexOfNew = newLength;37 while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal)38 {39 if(string[indexOfOriginal]==' ')//当遇到空格,则在新的加上%2040 {41 // printf("遇到空格/n");42 string[indexOfNew--] = '0';43 string[indexOfNew--] = '2';44 string[indexOfNew--] = '%';45 }46 else47 {48 string[indexOfNew--] = string[indexOfOriginal];49 }50 indexOfOriginal--;51 52 }53 }54 55 int main(int argc,char *argv[])56 {57 char string[] = "X S F";58 int Totallen = sizeof(string)/sizeof(char);//包含/059 // int Strlen = strlen(string);//不包含/060 printf("替换前%s\n",string);61 ReplaceBlank(string,Totallen);62 printf("替换后%s\n",string);63 // printf("len=%d\n",Totallen);64 // printf("str=%d\n",Strlen);65 // int BankNum = GetBankLen(string);66 // printf("空格长度为%d\n",BankNum);67 68 }
0 0
- 剑指offer面试题4 替换空格(c)
- 剑指offer-->面试题4 替换空格
- 《剑指offer》面试题4 替换空格
- 【剑指offer】面试题4:替换空格
- 【剑指offer】面试题4替换空格
- 剑指offer 面试题4 替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4-替换空格
- 《剑指Offer》面试题4:替换空格
- 【剑指offer】 面试题4: 替换空格
- 剑指offer 面试题4---替换空格
- 剑指offer面试题4-- 替换空格
- 【剑指offer】面试题4:替换空格
- 剑指Offer:面试题4 替换空格
- 剑指offer-面试题4:替换空格
- 剑指Offer 面试题4 替换空格
- 剑指offer-----面试题4(替换空格)
- 剑指offer面试题4 替换空格
- 我理解的剑指offer----字符串的全排列和组合算法
- Android图片切圆
- (11)mysql中的条件定义、处理
- gitlab的搭建及问题的解决
- 剑指offer面试题3 二维数组中的查找(c)
- 剑指offer面试题4 替换空格(c)
- 剑指offer面试题5 从头到尾打印链表(c)
- 剑指offer面试题6 重建二叉树(c)
- 剑指offer面试题3 二维数组中的查找 (java)
- 剑指offer面试题4 替换空格(java)
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指offer面试题6 重建二叉树(java)
- golang接口
- Map俩种遍历方式