今天就跟大家聊聊有关如何替换字符串中的空格,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
题目描述:实现一个函数,把字符串中的每个空格替换成 “%20”
例如: 输入“We are happy.” 输出“We%20are%20happy.”
分析:每次遇到空格后,把空格后所有的字符都向后移动两个位置,于是会多出三个位置,此时将该三个位置替换成字符串“%20”,如下图:
很显然,这种方法的时间复杂度为 O(n^2),因此不适合采用!
方法二:
根据这种思路,代码应该很好写了:
/*length 为字符数组string的总容量*/ void ReplaceBlank(char string[], int length) { if(string == NULL && length <= 0) return; /*originalLength 为字符串string的实际长度*/ int originalLength = 0; int numberOfBlank = 0; int i = 0; while(string[i] != '\0') { ++ originalLength; if(string[i] == ' ') ++ numberOfBlank; ++ i; } /*newLength 为把空格替换成'%20'之后的长度*/ int newLength = originalLength + numberOfBlank * 2; if(newLength > length) return; int indexOfOriginal = originalLength; int indexOfNew = newLength; while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal) { if(string[indexOfOriginal] == ' ') { string[indexOfNew --] = '0'; string[indexOfNew --] = '2'; string[indexOfNew --] = '%'; } else { string[indexOfNew --] = string[indexOfOriginal]; } -- indexOfOriginal; } }
看完上述内容,你们对如何替换字符串中的空格有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。