old_contents: """Leetcode 344. Reverse String
  Easy
  
  URL: https://leetcode.com/problems/reverse-string/
  
  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"]
  """
  
  class SolutionTwoPointer(object):
      def reverseString(self, s):
          """
          :type s: List[str]
          :rtype: None Do not return anything, modify s in-place instead.
          """
          # Apply two pointer method.
          left, right = 0, len(s) - 1
          while left < right:
              s[left], s[right] = s[right], s[left]
              left += 1
              right -= 1
  
  
  def main():
      # Output: ["o","l","l","e","h"]
      s = ["h","e","l","l","o"]
      SolutionTwoPointer().reverseString(s)
      print s
  
      # Output: ["h","a","n","n","a","H"]
      s = ["H","a","n","n","a","h"]
      SolutionTwoPointer().reverseString(s)
      print s
  
  if __name__ == '__main__':
      main()
  
new_contents: """Leetcode 344. Reverse String
  Easy
  
  URL: https://leetcode.com/problems/reverse-string/
  
  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"]
  """
  
  class SolutionTwoPointer(object):
      def reverseString(self, s):
          """
          :type s: List[str]
          :rtype: None Do not return anything, modify s in-place instead.
  
          Time complexity: O(n).
          Space complexity: O(1).
          """
          # Apply two pointer method.
          left, right = 0, len(s) - 1
          while left < right:
              s[left], s[right] = s[right], s[left]
              left += 1
              right -= 1
  
  
  def main():
      # Output: ["o","l","l","e","h"]
      s = ["h","e","l","l","o"]
      SolutionTwoPointer().reverseString(s)
      print s
  
      # Output: ["h","a","n","n","a","H"]
      s = ["H","a","n","n","a","h"]
      SolutionTwoPointer().reverseString(s)
      print s
  
  if __name__ == '__main__':
      main()
  
subject: Add time/space complexity