SRM 404 DIV2 Level.2

ぐだぐたになったけどシステムテストパスしたからおk。

public class RevealTriangle
{
    public int getAns(int a, int b)
    {
        int ret = 0;
        for (int i = 0; i < 10; i++)
        {
            if (a == (b + i) % 10)
            {
                ret = i;
                break;
            }
        }
        return ret;
    }

    public String[] calcTriangle(String[] questionMarkTriangle)
    {
        for (int i = questionMarkTriangle.Length - 2; i >= 0; i--)
        {
            String s = questionMarkTriangle[i];
            String s2 = questionMarkTriangle[i + 1];

            while (true)
            {
                if (!s.Contains('?'.ToString()))
                {
                    break;
                }

                for (int j = 0; j < s.Length - 1; j++)
                {
                    if (s[j] == '?' && s[j + 1] == '?')
                    {
                        continue;
                    }
                    int index = 0;
                    int index2 = 0;
                    int a = 0;
                    int b = 0;

                    if (s[j] == '?')
                    {
                        index = j + 1;
                        index2 = j;
                    }
                    else
                    {
                        index = j;
                        index2 = j + 1;
                    }
                    if (j >= s2.Length)
                    {
                        a = int.Parse(s2[s2.Length - 1].ToString());
                    }
                    else
                    {
                        a = int.Parse(s2[j].ToString());
                    }

                    b = int.Parse(s[index].ToString());
                    int ans = getAns(a, b);
                    s = s.Remove(index2, 1);
                    s = s.Insert(index2, ans.ToString());

                    if (!s.Contains('?'.ToString()))
                    {
                        break;
                    }
                    
                }
            }
            questionMarkTriangle[i] = s;
        }
        return questionMarkTriangle;
    }
}