颠倒一个字符串。优化速度。优化空间。
2014-04-14 13:38
232 查看
void reverse(char *str) {
reverseFixlen(str, strlen(str));
}
void reverseFixlen(char *str, int n) {
char* p = str+n-1;
while (str < p) {
char c = *str;
*str++ = *p; *p--=c;
}
}
这也是微软的一个面试题,不过我觉得http://blog.csdn.net/v_july_v/article/details/6870251这里给出的代码有点问题,上面是我修改后的代码。
关于颠倒字符串问题还有很多其他的解法,具体参见:http://www.cnblogs.com/graphics/archive/2011/03/09/1977717.html(引用)
reverseFixlen(str, strlen(str));
}
void reverseFixlen(char *str, int n) {
char* p = str+n-1;
while (str < p) {
char c = *str;
*str++ = *p; *p--=c;
}
}
这也是微软的一个面试题,不过我觉得http://blog.csdn.net/v_july_v/article/details/6870251这里给出的代码有点问题,上面是我修改后的代码。
关于颠倒字符串问题还有很多其他的解法,具体参见:http://www.cnblogs.com/graphics/archive/2011/03/09/1977717.html(引用)
相关文章推荐
- 找到一个字符串,优化速度,优化空间
- 编写反转字符串的程序,要求优化速度、优化空间。
- 编写反转字符串的程序,要求优化速度、优化空间
- 编写反转字符串的程序,要求优化速度、优化空间
- 每天三道冲刺工作--编写反转字符串的程序,要求优化速度、优化空间。
- 编写反转字符串的程序,要求优化速度、优化空间。
- 反转字符串,优化速度,优化空间。
- 查找一个字符串中第一个只出现两次的字符。比如:“abcdefabcdefabc”中第一个只出现两次为‘d’,要求时间复杂度为O(N),空间复杂度为O(1)
- 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
- JAVA将一个字符串反向颠倒
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)
- 对一道“写一个算法实现字符串逆序存储,要求不另设串存储空间.”题目的总结!
- 请编写一个方法,将字符串中的空格全部替换为“ ”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
- 给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。
- 删除字符串中的连续空格(只保留一个),O(n)时间复杂度,O(1)空间复杂度
- 请编写一个方法,将字符串中的空格全部替换为“%20”。假定该字符串有足够的空间存放新增的字符,并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。 给定一个string
- 把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,不能申请额外的空间
- 【每日一题】查找一个字符串中第一个只出现两次的字符。要求时间复杂度为O(N),空间复杂度为O(1)
- 编写一个函数new,对n个字符开辟连续的存储空间,此函数应返回一个指针(地址),指向字符串开始的空间。new(n)表示分配n个字节的内存空间。
- 腾讯2017年实习生编程题目(第二题)----2.算法基础-字符移位 小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。