我被赋予了一个相当奇怪的要求来满足特定的解决方案。要求是在给定当前数字的情况下编写一个函数,以查找下一个连续数字,该数字不包括具有两个或多个连续 6 的数字。
到目前为止,我有以下代码(在 C# 中),我用一些输入进行了测试,它可以工作。我知道这不是最有效的解决方案,但它可以完成工作,我只是想看看是否有更有效的方法来做到这一点。我采取的方法是将数字转换为字符串并使用简单的正则表达式来查看下一个序列是否是给定要求的有效序列。我也知道,一旦数字达到其 (2^31) - 1 限制,它将引发错误,但目前这不是问题。
public int GetNextSequenceNumber(int currentSequenceNumber)
{
var nextSequenceCandidate = currentSequenceNumber + 1;
var strNum = nextSequenceCandidate.ToString();
if (IsValidSequenceNumber(strNum))
{
return nextSequenceCandidate;
}
else
{
do
{
strNum = (++nextSequenceCandidate).ToString();
} while (!IsValidSequenceNumber(strNum));
return nextSequenceCandidate;
}
}
private bool IsValidSequenceNumber(string sequenceNumber)
{
return !Regex.IsMatch(sequenceNumber, "[6]{2,}");
}
我在想还有另一种方法可以使用除法和模运算来找出数字位置并根据需要递增。任何输入表示赞赏,谢谢!