using System.Collections.Generic;
const string sentence = "Hello, how are you? Have you been to New Zeland?";
public static void Main()
Console.WriteLine("olleH, woh era uoy? evaH uoy neeb ot weN dnaleZ?" == Reverse(sentence));
private static string Reverse(string s) {
parts.ForEach(_ => reversed += ReversePart(_, ref i));
private static List<string> GetParts(){
var punctList = sentence.Where(_ => char.IsPunctuation(_) || char.IsWhiteSpace(_)).ToArray();
return new List<string> (sentence.Split(punctList));
private static string ReversePart(string part, ref int i) {
var punctuation = (i < sentence.Length)? sentence[i].ToString():"";
var charArray = part.ToCharArray();
Array.Reverse(charArray);
return string.Concat(new string(charArray), punctuation);