Fråga : Hur kan C# matchsubstrings mycket fasta?

I det nedanföra problemexemplet, varje objekt i ”usableItems” söks efter i ”de originalItems” datan strukturerar. Varje objekt, som inte finnas, förläggas i discardedItemsna stränger usableItems för array.

PROBLEM EXAMPLE
string [] = {”1”, ”b7”, ”13”}; originalItems för
string [] = {”1”, ”3”, ”5”, ”b7”, ”9”, ”11”, ”13”}; discardedItems för
string [] = {”3”, ”5”, ”9”, ”11”}; //final result

How bör A.C. nr. programet att strukturera datan, och logik som minimerar tiden att bygga finalen, stränger samling namngav ”discardedItems”? funderare Regex och IndexOf för

I skulle är antagligen långsam. Och I-förmiddag inte sure om att använda samlingar för röding [] somehow. Också det kan är övervägande av en ordbok för snabb referens, men upprätta därefter ordboken som också ska, kräv tid. Hmmm.

SOME HÄRSKAR (önska precis att förklara klart):
(1) som objekten föreställer numeriskt, noterar i allmänningpianoackord. Det finns hundratals ackord, med variationer i kor, lägenheter och numrerar av objekt för att matcha och/eller matchas. Typiska objekt är ”3”, ”#5”, ”7”, ”b7”, ”#9”, ”b11”, ”11”, ”#11”, ”b13”, etc.
(2) för objekt förhöjningen alltid numeriskt från från vänster till höger. 3) objekt för
(gör inte repeat.
(4) där kan vara från 1 till 7 ”originalItems”.
(5) där kan vara från 1 till 7 ”usableItems”.
(6) ska där är aldrig mer ”usableItems” än ”originalItems”.
(7) varje objekt i ”usableItems” FINNS ALLTID i ”originalItems”.

NOTE: Stränga samlingar används för ”usableItems” och ”originalItems”, men endast finalresultatet ”discardedItems” måste vara en strängasamling att framlägga detta problem.

I som uppriktigt skulle, uppskattar något kodifierar ideas.
" klar "

Svar : Hur kan C# matchsubstrings mycket fasta?

Hi chaffinsjc;

Om du använder visuellt hjälpmedelstudion. Förtjäna 2008, eller 2010 därefter som du kan använda den fastställda operatören, undantar för att få vad du behöver.

Fernando
1:
2:
3:
4:
5:
6:
// danande originalen som listar ska är mer effecent
Lista usableItems = nytt listar () {”1”, ”b7”, ”13”};
Lista originalItems = nytt listar () {”1”, ”3”, ”5”, ”b7”, ”9”, ”11”, ”13”};

Det // resultatet stränger samling
stränga [] discardedItems = originalItems.Except (usableItems) .ToArray ();
Andra lösningar  
 
programming4us programming4us