2.5.10

上次更新:2019-04-17
发现了题解错误/代码缺陷/排版问题?请点这里:如何:提交反馈

解答

用一个 int 数组来保存版本号,按顺序进行比较。
如果两个版本号不等长且前缀相同,那么较长的版本号比较高,例如:1.2.1 和 1.2。

using System;

namespace _2._5._10
{
    /// <summary>
    /// 版本号。
    /// </summary>
    class Version : IComparable<Version>
    {
        private int[] versionNumber;

        public Version(string version)
        {
            string[] versions = version.Split('.');
            this.versionNumber = new int[versions.Length];
            for (int i = 0; i < versions.Length; i++)
            {
                this.versionNumber[i] = int.Parse(versions[i]);
            }
        }

        public int CompareTo(Version other)
        {
            for (int i = 0; i < this.versionNumber.Length && i < other.versionNumber.Length; i++)
            {
                if (this.versionNumber[i].CompareTo(other.versionNumber[i]) != 0)
                    return this.versionNumber[i].CompareTo(other.versionNumber[i]);
            }
            return this.versionNumber.Length.CompareTo(other.versionNumber.Length);
        }

        public override string ToString()
        {
            string result = "";
            for (int i = 0; i < this.versionNumber.Length - 1; i++)
            {
                result += this.versionNumber[i] + ".";
            }
            result += this.versionNumber[this.versionNumber.Length - 1].ToString();
            return result;
        }
    }
}
上一题 下一题