[算法练习]将字符串中*提前&&删除指定字符

来源:互联网 发布:哪个软件可以看素媛 编辑:程序博客网 时间:2024/06/06 06:51
//思路:只要不是星号的都交给写指针写入,忽略*

//问题可以转换为:删除字符串中的特定字符 只不过这个是从尾巴开始

#include <stdio.h>size_t _strlen(char *str){return (NULL == str || *str =='\0') ? 0 : _strlen(str+1) + 1;}//思路:只要不是星号的都交给写指针写入,忽略*//问题可以转换为:删除字符串中的特定字符 只不过这个是从尾巴开始char* str_TiQian(char *str){if(NULL == str || *str == '\0')return NULL;int len = 0;int Dst = 0;int count = 0;len = Dst = _strlen(str) - 1;do{if(str[len] != '*')str[Dst--] = str[len];//这里是先执行str[dst] = str[len] 然后才dst-1;elsecount ++;} while (len--);for (int i = 0; i < count; i++){str[i] = '*';}printf("%s\n",str);return str;}//思路同上char* str_TiQian_Ex(char* str){if(NULL == str || '\0' == *str)return NULL;char *pRead = 0;char *pWrite = 0;pRead = pWrite = str + _strlen(str) - 1;do{if(*pRead != '*')*pWrite-- = *pRead;} while (pRead-- != str);//先比较再赋值while (pRead <= pWrite){*pRead++ = '*';//先执行后面的在执行加操作//相当于//*pRead = '0';//pRead ++;}printf("%s\n",str);return str;}char* Del_speciol_ch(char *str, char ch){if(NULL == str || *str == '\0')return NULL;char *pRead = 0;char *pWrite = 0;pRead = pWrite = str;do{if(*pRead != ch)*pWrite++ = *pRead;} while (*pRead++ != '\0');printf("%s\n",str);return str;}char* Del_speciol_ch_Ex(char *str, char ch){if(NULL == str || *str == '\0')return NULL;int sour = 0;int dst = 0;do{if(str[sour] != ch)str[dst++] = str[sour];} while (str[sour++] != '\0');printf("%s\n",str);return str;}void main(){char str0[260] = "hel*lo w*or*ld";printf("%s\n",str0);str_TiQian(str0);char str1[260] = "***hel*l**o w*o**r*ld**";printf("\n%s\n",str1);str_TiQian(str1);char str3[260] = "***hel*l**o w*o**r*ld**";printf("\n%s\n",str3);str_TiQian_Ex(str3);char str4[260] = "hel***lo w*or*ld";printf("\n%s\n",str4);str_TiQian_Ex(str4);printf("\n----------\nDel * \n");char str5[260] = "hel***lo w*or*ld";printf("\n%s\n",str5);Del_speciol_ch(str5,'*');Del_speciol_ch(str3,'*');char str6[260] = "hel***lo w*or*ld";char str7[260] = "***hel*l**o w*o**r*ld**";printf("\n%s\n",str6);Del_speciol_ch_Ex(str6,'*');printf("\n%s\n",str7);Del_speciol_ch_Ex(str7,'*');getchar();}


0 0
原创粉丝点击