我想要做的是找到給定序列的子序列。但我想要的子序列方法是不同的。也就是說,第一位數字應該總是第一位,第二位總是第二位,依此類推。所以,它應該是保持秩序。例如給出三個整數,X = 100,Y = 350,Z = 35,我想找到X和Y之間的所有數字,這樣數字的數字就包含了Z位的序列,即{3, 5}。在這種情況下,輸出應該是8和子序列是:135,235,305,315,325,335,345,350如何在C#中查找順序保留子序列?
public List<int> split(int Z) {
var digits = new List<int>();
for (; Z > 0; Z /= 10) {
digits.Add(Z % 10);
}
return digits;
}
private static int count(int X, int Y, int Z) {
int count = 0;
var splitZ = split(Z);
for (int i = X; i <= Y; i++) {
var idigits = split(i);
var subseq = new LinkedList<int>();
foreach (var digit in idigits) {
subseq.AddLast(digit);
if (subseq.Count == splitZ.Count) {
if (subseq.SequenceEqual(splitZ)) {
Console.WriteLine(i);
count++;
}
}
}
}
return count;
}
我有上面的代碼段,但與它的問題是, ,它將作爲輸出3而不是8返回。它只是計數,135,235,335。序列35彼此相鄰。任何想法如何修改代碼並實現我想要的?
你看過基數排序嗎? –
讓我想起了邏輯學期1 - DFA和NFA – Benj
@DavidLively不是真的沒有。 – typos