首页 > 学院 > 开发设计 > 正文

高效替换字符串中的空格

2019-11-06 06:54:40
字体:
来源:转载
供稿:网友
#include <stdio.h>#include "String.h"int ReplaceBlank(char * str,long length){ //length 为数组的最大容量 int blankNumber = 0; int originalLength = 0; int i=0; while (str[i] != '/0') { originalLength++; if (str[i] == ' ') { blankNumber++; } ++i; } int newLength = originalLength + blankNumber * 2; if(newLength > length) return 0; //因为需要把原数组中最后一位‘/0’也一起复制的,所以这里没有减一; int indexOfOriginal = originalLength; int indexofNew = newLength; while(indexOfOriginal>=0 && (indexOfOriginal<indexofNew)){ if (str[indexOfOriginal] == ' ') { str[indexofNew--] = '0'; str[indexofNew--] = '2'; str[indexofNew--] = '%'; }else{ str[indexofNew--] = str[indexOfOriginal]; } --indexOfOriginal; } return 1;}int main(int argc, const char * argv[]) { char str[100] ;//= "hello world "; scanf("%[^/n]",str); //str[strlen(str)] = '/0'; ReplaceBlank(str,100); PRintf("%s/n",str); return 0;}

拓展:a1,b1是已经排完大小元素的数组,把a1和b1高效的合成一个数组

#include<stdio.h>void fun(int a[],int len1,int b[],int len2){ int len = len1+len2; len--; len1--; len2--; while(len1>=0 && len2>=0){ if(a[len1]>=b[len2]){ a[len--] = a[len1--]; }else{ a[len--] = b[len2--]; } } //如果len2有剩余的话,则把剩余的元素移动到a while (len2>=0) { a[len--] = b[len2--]; } //len1剩余,证明已经排好}int main(){ int a[10] = {2,3,4,311}; int b[6] = {}; int len1 = 4; int len2 = 0; fun(a,len1,b,len2); for (int i=0;i<len1+len2;i++) { printf("%d ",a[i]); }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表