题目:
请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.”,则输出“We%20are%20happy.”。
解答:
/**
* 请实现一个函数,把字符串中的每个空格替换成"%20",例如“We are happy.“,则输出”We%20are%20happy.“。
*
* @param str 要转换的字符数组
* @return 转换后使用的字符长度,-1表示处理失败
*/
NSInteger replaceBlankChar(char *str) {
// 判断输入是否合法
if (str == nil || strlen(str) == 0) {
return -1;
}
// 统计字符数组中的空白字符数
NSInteger oldStringLength = strlen(str);
NSInteger blancChatCount = 0;
for (NSInteger tmpIndex = 0; tmpIndex < oldStringLength; tmpIndex++) {
if (str[tmpIndex] == ' ') {
blancChatCount ++;
}
}
// 如果没有空白字符就不用处理
if (blancChatCount == 0) {
return oldStringLength;
}
// 从后向前,第一个开始处理的字符
// 处理后的字符放置的位置
// 字符中有空白字符,一直处理到所有的空白字符处理完
NSInteger newStringLength = oldStringLength + blancChatCount * 2;
NSInteger tmpNewStringLength = newStringLength;
for (NSInteger tmpCount = oldStringLength; tmpCount > 0; tmpCount--) {
if (str[tmpCount] == ' ') {
str[newStringLength--] = '0';
str[newStringLength--] = '2';
str[newStringLength--] = '%';
}
else {
str[newStringLength--] = str[tmpCount];
}
}
printf("%s\n", str);
return tmpNewStringLength;
}
int main(int argc, const char * argv[]) {
@autoreleasepool {
char str[50];
gets(str);
replaceBlankChar(str);
}
return 0;
}
网友评论