-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathword_prox.cpp
59 lines (43 loc) · 1.02 KB
/
word_prox.cpp
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include "word_prox.hpp"
using namespace std;
bool minusOne(string palavra1, string palavra2) {
int count = 0, i = 0, j = 0;
string maior, menor;
if (palavra1.size() > palavra2.size())
maior = palavra1, menor = palavra2;
else
menor = palavra1, maior = palavra2;
while ((unsigned int)j < menor.size()) {
if (maior[i] == menor[j]) {
i++;
j++;
}
else {
i++;
count++;
}
if (count > 1)
return 0;
}
count += maior.size() - menor.size();
if (count > 1)
return 0;
return 1;
}
bool letterPermut(string palavra1, string palavra2, int op) {
if (palavra2.size() != palavra1.size())
return 0;
int count = 0,j = 0;
while ((unsigned int)j < palavra1.size()) {
if (palavra1[j] != palavra2[j])
count++;
if ((count > 1 && op == SUB) || (count > 2 && op == EXC))
return 0;
j++;
}
return 1;
}
bool wordProximity(string palavra1, string palavra2) {
return (letterPermut(palavra1, palavra2, EXC) || letterPermut(palavra1, palavra2, SUB) || minusOne(palavra1, palavra2));
}