字符反转
2015-12-12 17:51
288 查看
第一种方式:使用字符缓存(推荐)
public static string ReverseByCharBuffer2(this string original) { char[] c = original.ToCharArray(); int l = original.Length; for (int i = 0; i < l / 2; i++) { char t = c[i]; c[i] = c[l - i - 1]; c[l - i - 1] = t; } return new string(c); }
第二种方式:使用StringBuilder
public static string ReverseByStringBuilder2(this string original) { StringBuilder sb = new StringBuilder(original); for (int i = 0, j = original.Length - 1; i <= j; i++, j--) { sb[i] = original[j]; sb[j] = original[i]; } return sb.ToString(); }
第三种方式:使用栈
public static string ReverseByStack(this string original) { Stack<char> stack = new Stack<char>(); foreach (char ch in original) { stack.Push(ch); } char[] c = new char[original.Length]; for (int i = 0; i < original.Length; i++) { c[i] = stack.Pop(); } return new string(c); }
第四种方式:使用指针
public static unsafe string ReverseByPointer(this string original) { fixed (char* pText = original) { char* pStart = pText; char* pEnd = pText + original.Length - 1; for (int i = original.Length / 2; i >= 0; i--) { char temp = *pStart; *pStart++ = *pEnd; *pEnd-- = temp; } return original; } }
第五种方式:使用递归
public static string ReverseByRecursive(this string original) { if (original.Length == 1) return original; else return original.Substring(1).ReverseByRecursive() + original[0]; }
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例