Write a function that reverses a string. The input string is given as an array of characters char[].
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.
You may assume all the characters consist of printable ASCII characters.
Example 1:
Input: ["h","e","l","l","o"]
Output: ["o","l","l","e","h"]
Example 2:
Input: ["H","a","n","n","a","h"]
Output: ["h","a","n","n","a","H"]
Solution:
using System;
using System.Collections.Generic;
using System.Text;
namespace LeetCode.AskGif.Easy.String
{
public class ReverseStringSoln
{
public void ReverseString(ref char[] s)
{
for(int i=0, j = s.Length - 1; i < j; i++, j--)
{
char temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
Time Complexity: O(n)
Space Complexity: O(1)
Unit Tests:
using CodingUnitTest.Util;
using LeetCode.AskGif.Easy.String;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Text;
namespace CodingUnitTest.Easy.String
{
[TestClass]
public class ReverseStringSolnTests
{
[TestMethod]
public void ReverseStringSoln_First()
{
var input = new char[] { 'h', 'e', 'l', 'l', 'o' };
var output = new char[]{'o', 'l', 'l', 'e', 'h'};
new ReverseStringSoln().ReverseString(ref input);
ContractAssert.AreEqual(input, output);
}
}
}



