用4种不同的方法反转字符串
2010-03-04 21:46
232 查看
#include <stdio.h> #include <stdlib.h> #include <assert.h> void strrev_v1(char* src) { assert(src != NULL); if (strlen(src) == 1) return; char *head = src; char *tail = src + strlen(src) - 1; char temp = ' '; while(head < tail) { temp = head[0]; head[0] = tail[0]; tail[0] = temp; head++; tail--; } } void strrev_v2(char* src) { assert(src != NULL); if (strlen(src) == 1) return; char *head = src; char *tail = src + strlen(src) - 1; while(head < tail) { head[0] ^= tail[0]; tail[0] ^= head[0]; head[0] ^= tail[0]; head++; tail--; } } void strrev_v3(char* src) { assert(src != NULL); if (strlen(src) == 1) return; char *head = src; char *tail = src + strlen(src) - 1; while(head < tail) { head[0] = head[0] + tail[0]; tail[0] = head[0] - tail[0]; head[0] = head[0] - tail[0]; head++; tail--; } } void strrev_v4(char* src, int len) { //采用的是递归的思路 assert(src != NULL); if (len < 2) return; char *head = src; char *tail = src + len - 1; head[0] = head[0] + tail[0]; tail[0] = head[0] - tail[0]; head[0] = head[0] - tail[0]; strrev_v4(head+1, len-2); } int main() { char *a = (char*)malloc(5*sizeof(char)); //本来这里采用的是char *a = "12345"的写法,后来发现"12345"是常量字符串,不能被修改,当然就不能被交换了。 strcpy(a, "12345"); strrev_v4(a, strlen(a)); printf("%s/n", a); return 0; }
相关文章推荐
- Python实现字符串反转的常用方法分析【4种方法】
- c++ 字符串反转方法 UNICODE 和 ANSI 版本
- python字符串反转的集中方法
- 字符串的反转五种方法
- 7 种将字符串反转的 Java 方法
- 几种字符串反转方法效率比较
- 实现字符串反转的四种方法(C#)
- 写一个方法,实现字符串的反转,如:输入abc,输出cba
- 几种字符串反转方法效率比较
- 使用Java自带的方法反转字符串
- java 自定义的 字符串反转方法 和模拟除去 字符串两端空方法
- 不同浏览器下js的字符串split方法的差异
- 判断两个字符串不同的json是否等价(附:将等价但是不同json调整成同一字符串的方法)
- Python中字符串反转的方法:
- Shell中实现字符串反转方法分享
- 使用4种方法来算字符串长度
- C# 判断字符串为空的4种方法及效率
- 详解C与C++中操作字符串方法的不同
- 字符串反转的9种方法
- Java中"=="和equals方法在字符串比较中的不同