C# 如何比较从字符串中提取的 2 个数字



我必须编写一个程序,该程序将接收一系列由逗号分隔的自然数,例如 [13,2,44,56,78,3,354] 并拉出一个子字符串,该子字符串的元素不小于之前的元素,例如其 [2,44,56,78]。如果有多个这样的子字符串要显示较长的子字符串。到目前为止,我有这个。

using System;
using static System.Console;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Text.RegularExpressions;
class Program
{
    static void Main()
    {
    string s1 = ReadLine();
    string[] numbers = Regex.Split(s1, @"D+");
    foreach (string value in numbers)
    {
        if (!string.IsNullOrEmpty(value))
        {
            int i = int.Parse(value);
            int highest = 
        }
    } WriteLine(s1);
    Console.ReadKey();
    }
}

现在我必须比较下一个数字是比下一个小还是大,我在这里陷入困境。有什么想法吗?

如果我理解正确,您需要如下所示的内容:

string numbers = "13,2,44,56,78,3,354,1,2,3,4,5,4";
var values = numbers.Split(',').Select(a => int.Parse(a)).ToArray();
var maxStart = values.Length > 0 ? values[0] : 0;
var maxLength = values.Length > 0 ? 1 : 0;
int currentStart = 0;
int currentLength = 1;
for (int i=0; i<values.Length; i++)
{
    if (i + 1 < values.Length && values[i + 1] >= values[i])
        currentLength++;
    else
    {
        if (currentLength > maxLength)
        {
            maxLength = currentLength;
            maxStart = currentStart;
        }
        currentStart = i + 1;
        currentLength = 1;
    }
}
Console.WriteLine("Start={0}, Length={1}, Sequence={2}", maxStart, maxLength,
    string.Join(",", values.Skip(maxStart).Take(maxLength)));
//Start=7, Length=5, Sequence=1,2,3,4,5
抱歉,

我无法对此进行测试(或查找正确的调用),但希望您能理解要点。 您读取每个数字,看看它是否比前一个数字>=。如果是,则将其存储在列表中。 一旦有一个数字小于前一个数字,您就可以打印出序列并清除列表。

List<int> sequence = new List<int>(10);
int previousNumber = -1;
int currentNumber = -1;
foreach (string value in numbers)
{
    if (!string.IsNullOrEmpty(value))
    {
        currentNumber = int.Parse(value);
        if (currentNumber >= previousNumber)
        {
            sequence[sequence.Length()] = currentNumber;
            previousNumber = currentNumber;
        }
        else
        {
            if (sequence.Length() > 1)
            { 
                // print sequence.
            }
            // Erase everything in the list.
        }
    }
}

相关内容

  • 没有找到相关文章

最新更新