您的位置:首页 > 职场人生

面试题整理-空格变更

2012-10-15 22:22 204 查看
题目:

给定个字符串,把这个字符串中的空格更改成为%20。

假定这个字符串的空间是够用的。

解法

首先计算空格数目x与非空格数目y。

那么更改之后的字符串长度为3x+y;

计算出长度之后,再从尾部向前拷贝。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *change(char *src) {
int cnt_space = 0, cnt_word = 0;
int len = -1, target_pos;

if (!src) return NULL;

while (src[++len] != '\0') {
cnt_space += ' ' == src[len];
cnt_word += ' ' != src[len];
}

target_pos = cnt_space * 3 + cnt_word;

while (len >= 0) {
if (' ' == src[len]) {
src[target_pos--] = '0';
src[target_pos--] = '2';
src[target_pos--] = '%';
} else {
src[target_pos--] = src[len];
}
--len;
}
return src;
}
int main(void) {
char s[4096];
int read = 0;
while (gets(s) != EOF) {
printf("%s\n", change(s));
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: