查看并说出输入数字的序列

问题描述 投票:0回答:1

我在样本中有一个输入数字,我正在读取该数字,然后执行“看和说”序列。它正在工作,但是我想知道是否有更优雅的方法来做到这一点。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(ArraryFunction("111115"));
    }

    private static string ArraryFunction(string input)
    {
        var charArray = input.ToCharArray();
        int count = 0;
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < charArray.Length; i++)
        {
            if (i == charArray.Length - 1)
            {
                if (charArray[i] == charArray[i - 1])
                {
                    count++;
                    stringBuilder.Append(string.Concat(count, charArray[i]));
                    return stringBuilder.ToString();
                }
                stringBuilder.Append(string.Concat(1, charArray[i]));
                return stringBuilder.ToString();
            }
            if (charArray[i] == charArray[i + 1])
            {
                // current character count ++
                count++;
            }
            else
            {
                stringBuilder.Append(string.Concat(count + 1, charArray[i]));
                count = 0;
            }


        }
        return "";
    }
}
c# algorithm console-application
1个回答
0
投票

您可以使用

Regex.Replace
来识别相同数字的块,并在回调中处理它们:

    private static string ArraryFunction(string input)
    {
        return Regex.Replace(input, "(.)\\1*", 
            m => string.Concat(m.Value.Length, m.Value[0]));
    }
© www.soinside.com 2019 - 2024. All rights reserved.