删除字符数组中的前导零

本文关键字:字符 数组 删除 | 更新日期: 2023-09-27 18:12:05

我试图减去两个字符串(理论上无限长度),而不使用像BigInt这样的库,但我想知道是否有人对如何在像下面这样的角落情况下删除前导零有任何好主意?

    static void Main(string[] args)
    {
        Console.WriteLine(Subtract("10", "10005"));
    }

    static string ReverseInput(string inputString)
    {
        char[] charArray = inputString.ToCharArray();
        Array.Reverse(charArray);
        return new string(charArray);
    }
    static string Subtract(string firstNumInput, string secondNumInput)
    {
        string firstNum = String.Empty;
        string secondNum = String.Empty;
        bool negative = false;
        // Reverse order of string input
        if (firstNumInput.Length > secondNumInput.Length)
        {
            firstNum = ReverseInput(firstNumInput);
            secondNum = ReverseInput(secondNumInput); 
        }
        else if (firstNumInput.Length < secondNumInput.Length)
        {
            negative = true;
            firstNum = ReverseInput(secondNumInput);
            secondNum = ReverseInput(firstNumInput);
        }
        else if (firstNumInput.Length == secondNumInput.Length)
        {
            // iterate through string to find largest
        }
        char[] result = new char[firstNum.Length + 1]; 
        int resultLength = 0;
        int carry = 0;
        for (int i = 0; i < firstNum.Length; i++)
        {
            int an = (i < firstNum.Length) ? int.Parse(firstNum[i].ToString()) : 0;
            int bn = (i < secondNum.Length) ? int.Parse(secondNum[i].ToString()) : 0;
            int rn = an - bn - carry;
            if (rn < 0)
            {
                carry = 1;
                rn += 10;
            }
            else
            {
                carry = 0;
            }
            result[resultLength++] = (char)(rn + '0');
        }
        // create the result string from the char array
        string finalResult = ReverseInput(new string(result, 0, resultLength));
        if (negative)
        {
            finalResult = '-' + finalResult;
        }
        return finalResult;
    }

删除字符数组中的前导零

您在找TrimStart吗?

    // create the result string from the char array
    string finalResult = ReverseInput(new string(result, 0, resultLength)).TrimStart('0');