私がしたいことは、与えられたシーケンス内のサブシーケンスを見つけることです。しかし、私はサブシーケンス法を違うものにしたい。すなわち、最初の桁は常に先頭に、2番目の桁は常に2番目になるようにします。したがって、それは注文を保存する必要があります。C#で注文保存サブシーケンスを見つける方法は?
たとえば、X = 100、Y = 350、Z = 35の場合、XとYの間のすべての数字を検索して、数字の桁にZ桁のシーケンス{ 5}。この場合の出力は8であるべきであり、部分配列は:235、305、315、325、335、345、350
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;
}
、135 Iは、上記のコードセグメントを有しているが、それに問題がすることですそれは8の代わりに出力3として返されます。ちょうどカウント、135、235、335。シーケンス35が互いに隣り合っているところです。任意のアイデアコードを変更し、私が欲しいものを達成する方法?
基数ソートを見ましたか? –
論理学期1 - DFAとNFAsを思い起こさせる – Benj
@DavidLively本当はいいえ。 – typos