给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。例如:" i am a little boy. ",变成"i am a little boy",语言不限,但不要用伪代码作答,函数输入输出请参考如下的函数原型:
C++函数原型:
void
FormatString(
char
str[],
int
len){
}
首先是字符串数组操作,不需要再申请内存空间,通过下标访问字符;其次是空格在字符
串中的表示‘ ’,与‘\0’区分开;
'\0'表示字符串结束符,代表字符串结束,而空格是一个普通字符,显示在文本中可以选中。
'\0'的ASCII码为0,空格的ASCII码为32。
代码实现:
void
FormatString(
char
str[],
int
len)
{
if
(str == NULL || len <= 0)
return
;
int
i = 0, j = 0;
while
(str[i] ==
' '
)
//开头的空格
i++;
while
(str[i] !=
'\0'
)
{
if
(str[i] ==
' '
&& (str[i+1] ==
' '
|| str[i+1] ==
'\0'
))
{
//中间或者结尾的空格
i++;
continue
;
}
str[j++] = str[i++];
}
str[j] =
'\0'
;
}