using System.Collections.Generic;
public static void Main()
Console.WriteLine(test.RecursiveReverse());
public static class Helper
public static string ReverseUsingForBackward(this string text)
string output = string.Empty;
for (int i = text.Length - 1; i >= 0; i--)
public static string ReverseUsingForForward(this string text)
string output = string.Empty;
for (int i = 0; i <= text.Length - 1; i++)
output = text[i] + output;
public static string ReverseUsingForeach(this string input)
string output = string.Empty;
public static string ReverseUsingBuiltInFunction(this string input)
char[] charArray = input.ToCharArray();
Array.Reverse( charArray );
return new string( charArray );
public static string ReverseXor(this string s)
if (s == null) return null;
char[] charArray = s.ToCharArray();
for (int i = 0; i < len; i++, len--)
charArray[i] ^= charArray[len];
charArray[len] ^= charArray[i];
charArray[i] ^= charArray[len];
return new string(charArray);
public static string ReverseUsingStringBuilder(this string text)
StringBuilder builder = new StringBuilder(text.Length);
for (int i = text.Length - 1; i >= 0; i--)
return builder.ToString();
public static string ReverseUsingCharacterBuffer(this string text)
char[] charArray = new char[text.Length];
int inputStrLength = text.Length - 1;
for (int idx = 0; idx <= inputStrLength; idx++)
charArray[idx] = text[inputStrLength - idx];
return new string(charArray);
public static string ReverseUsingStack(this string input)
Stack<char> resultStack = new Stack<char>();
foreach (char c in input)
StringBuilder sb = new StringBuilder();
while (resultStack.Count > 0)
sb.Append(resultStack.Pop());
public static string RecursiveReverse(this string str) {
if (str.Length < 2) {return str;}
return str[str.Length - 1] + RecursiveReverse(str.Substring(0, str.Length - 1));