Ik wil graag een methode maken die een true returnt als de opgegeven strings gelijk zijn, maar er mag een afwijking met een opgegeven aantal.
Voorbeeld:
aantal fouten maximaal 2
"Hallo met mij" vergelijken met "Hallo met mij" resultaat is true
"Hallo met mij" vergelijken met "Hallo mat mii" resultaat is true
"Hallo met mij" vergelijken met "Hello mat mit" resultaat is false
Mijn vraag is hoe doe ik dat het efficiëntst en zijn daar al een goede algoritme voor.
Ik heb zelf ook een methode geschreven, alleen deze geeft soms index out of range fouten, alleen weet ik waar dat vandaan komt
.
Voorbeeld:
aantal fouten maximaal 2
"Hallo met mij" vergelijken met "Hallo met mij" resultaat is true
"Hallo met mij" vergelijken met "Hallo mat mii" resultaat is true
"Hallo met mij" vergelijken met "Hello mat mit" resultaat is false
Mijn vraag is hoe doe ik dat het efficiëntst en zijn daar al een goede algoritme voor.
Ik heb zelf ook een methode geschreven, alleen deze geeft soms index out of range fouten, alleen weet ik waar dat vandaan komt
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| private bool VoldoetAfwijking(string zoekWaarde, string vergelijkMet, int maxAantalAfwijkend) { int aantalAfwijkend = 0; string groot = ""; string klein = ""; if(zoekWaarde.Length>=vergelijkMet.Length) { groot = zoekWaarde; klein = vergelijkMet; } else { groot = vergelijkMet; klein = zoekWaarde; } int t = 1; int startIndex = 0; while(t<=klein.Length&&aantalAfwijkend<maxAantalAfwijkend) { if(!klein.Substring(startIndex,t).Equals(groot.Substring(startIndex,t))) { aantalAfwijkend++; startIndex = t; t = 0; } t++; } if(aantalAfwijkend < maxAantalAfwijkend) { return true; } return false; } |
[ Voor 18% gewijzigd door MoNo79 op 12-02-2006 21:38 ]