笔试部分:
面试题
// string reverse
// main.cpp
// 20191123
//
// Copyright (c) 2019年 apple. All rights reserved.
#include <iostream>
char* str_reverse(const char *str)
{
if (!str) {
printf("NULL input");
return NULL;
}
int i = 0;
while (str[i] != '\0')
i++;
int len = i + 1;
char *str1;
str1 = (char *)malloc(len);
for (int i = 0; i < (len - 1); i++) {
str1[len - i - 2] = str[i];
}
str1[len - 1] = '\0';
return str1;
}
int main(int argc, const char * argv[])
{
// insert code here...
char str[8] = "adbcdef";
char *str1 = str_reverse(str);
printf("%s\n", str1);
return 0;
}
易错点:
- 反转交换,是从尾到头交换数据,不包括’\0’。 所以,得到len后,for循环赋值的边界起始应该是从0- (len-1); str1 有数据的下标在for循环中应该是len-i-1;
- str1的最后一个字节需要单独赋值为’\0’。