I had this question on an interview where I was asked to solve this problem on C#. Reverse a string :) well my eyes were gleaming when i heard the question, best part being asking me to do it in all possible ways I could think off to answer it immediately. I was happy with the number of answers I could do it in that short tenure of time but I realized how knowing a framework in detail could streamline the thought process very quickly. I am going to list my answer in this post so that someone might bump on it on the rare instance and find it useful.
class Reverse
{
static void Main(string[] args)
{
Console.WriteLine("Enter Input String:");
string stringToBeReversed = Console.ReadLine();
string reversedString = ReverseTheString(stringToBeReversed);
Console.WriteLine("Reversed String is: " + reversedString);
Console.ReadLine();
}
private static string ReverseTheString(string stringToBeReversed)
{
//Nifty one ain't it?
char[] chArray= stringToBeReversed.ToCharArray();
Array.Reverse(chArray);
return new String(chArray);
}
private static string ReverseTheString1(string stringToBeReversed)
{
// interviewers love one liners don't they?? :)
return(new String(stringToBeReversed.Reverse().ToArray()));
}
private static string ReverseTheString2(string stringToBeReversed)
{
//Old fashioned way how could i ever miss the one with good'ol for loop
string sOutput = String.Empty;
char[] chArray = stringToBeReversed.ToCharArray();
for (int i = chArray.Length - 1; i > -1; i--)
{
sOutput += chArray[i];
}
return sOutput;
}
private static string ReverseTheString3(string stringToBeReversed)
{
//Old fashioned way with string Builder upgrade
StringBuilder sOutput = new StringBuilder();
char[] chArray = stringToBeReversed.ToCharArray();
for (int i = chArray.Length - 1; i > -1; i--)
{
sOutput.Append(chArray[i]);
}
return sOutput.ToString(); ;
}
private static string ReverseTheString4(string stringToBeReversed)
{
//one with recursion
if (stringToBeReversed.Length == 1)
return stringToBeReversed;
else
return stringToBeReversed[stringToBeReversed.Length - 1] + ReverseTheString4(stringToBeReversed.Substring(0, stringToBeReversed.Length - 1));
}
private static string ReverseTheString5(string stringToBeReversed)
{
//one with LINQ :)
var reversedValue = stringToBeReversed.ToCharArray()
.Select(ch => ch.ToString())
.Aggregate<string>((xs, x) => x + xs);
return reversedValue.ToString();
}
}
It's a real simple piece of code I posted it here since I felt the urge to write something since it's been a while I posted something on here. I am currently working on a top secret venture currently and once I form a working prototype I would definitely post it here. Hope someone finds my little post amusing.
Until Next time!!
//all one - line lovers need to move to python.
ReplyDeletes = 'Reverse'
print s[::-1]
Honestly I didn't get an email about your comment til now. Python peru kevalama iruku.
DeleteA different answer:
ReplyDeletePush all the characters to an array and pop out of it to get the string reversed.