朋友去面试,考试的出了这样一道题目,如下:
将字符串“abcd asd sbcf”转化成“sbcf asd abcd”输出,不得使用标准库。
首先我们要捋清思路,看这道题目的意思好像就是要将字符按照空格分割出来 然后在将截取的子串合并在一起。截取字串可以根据空格在原始字符串之中的位置来获取,获取之后添加到新的字符串里面即可;
下面是如何根据空格的位置来截取子串
/*
@brief 获取输入字符串的倒转子串 比如输入“abcd ascd” 输出"ascd abcd"
@src_str 输入原始字符串
@dest_str 输出倒转之后的字符串
@space_pos 空格在原始字符串之中的位置
@dest_pos 目的字符串中的位置
*/
void GetSubStr(const char* src_str,char*dest_str,int space_pos, int &dest_pos)
{
space_pos++;
while (src_str[space_pos] != 0 && src_str[space_pos] != ' ')
{
dest_str[dest_pos++] = src_str[space_pos++];
}
dest_str[dest_pos++] = ' ';
}
前提条件是要获取原始字符串之中所有空格的位置,然后按照位置最靠后的空格来调用上述函数,当所有的空格都调用完毕之后,需要将第一个子串添加到dest_str之中。
i = 0;
w