static readonly string letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
public static void Main()
result = Program.GetNextColumn("A");
Assert.AreEqual("B", result);
result = Program.GetNextColumn("Z");
Assert.AreEqual("AA", result);
result = Program.GetNextColumn("AZ");
Assert.AreEqual("BA", result);
result = Program.GetNextColumn("ABZ");
Assert.AreEqual("ACA", result);
result = Program.GetNextColumn("ZZZZ");
Assert.AreEqual("AAAAA", result);
result = Program.GetNextColumn("WSZ");
Assert.AreEqual("WTA", result);
private static string GetNextColumn(string str){
char lastChar = Convert.ToChar(str.Substring(str.Length - 1, 1));
for(int i = str.Length - 1; i >= 0; i--){
int currIndex = letters.IndexOf(str.Substring(i, 1));
retVal = letters.Substring(currIndex + 1, 1) + retVal;
else if(i < str.Length - 1 && i > 0){
if(str.Substring(i + 1, 1) == "Z")
retVal = letters.Substring(currIndex + 1, 1) + retVal;
retVal = letters.Substring(currIndex, 1) + retVal;
if(retVal.Substring(0, 1) != "Z" && retVal.Substring(0, 1) != "A")
retVal = letters.Substring(currIndex, 1) + retVal;
retVal = letters.Substring(currIndex + 1, 1) + retVal;
if(i == str.Length - 1 && i > 0){
retVal = letters.Substring(0, 1) + retVal;
else if(i < str.Length - 1 && i > 0)
if(str.Substring(i - 1, 1) != "A" && str.Substring(i - 1 , 1) != "Z")
retVal = letters.Substring(currIndex, 1) + retVal;
retVal = letters.Substring(0, 1) + retVal;
retVal = letters.Substring(0, 1) + retVal;
retVal = letters.Substring(0, 1) + retVal;