leetcode zigzag

感动得要哭了啊啊啊 这个题从去年夏天纠结我到现在 这就是一个简单的水题啊啊啊 但是却考了一个很重要的概念

题目要求:输入字符串 以“拉链”一样的形式输出 即Z字形输出

思路:就是简单的找规律就可以 找到数组下标的规律 再将每行的所有字符输入到malloc的数组中 最终返回

大坑:起码我认为对我来说是个大坑了。。去年和今年的想法差不多 但总是runtime error 但是其实最后执行的样例是正确的 最后——是因为对C语言字符串char *的理解不够

C语言的字符串的实际长度会比字符数多1 即在字符串尾会有一个'\0' 用于标识字符串的结束 所以在新建字符串时 实际上malloc的大小是strlen长度还要加1 因为strlen仅返回字符数 而sizeof则返回包括'\0'的字符串在内存中的实际长度 所以在设置长度为len+1后 还需要手动在索引为len的位置设置值为'\0'

eg. strlen("abc")->3  sizeof("abc")->4

char *s="abc"

strlen(s)-->3 返回s指向的字符串的长度

sizeof(s)-->4 返回指针占多少字节

sizeof(*s)-->1 返回指针指向的元素占多少字节 char类型是1字节

你可能感兴趣的:(leetcode zigzag)