Skip to content

Commit 4518155

Browse files
SpreehaMadhavBahl
authored andcommitted
day 12 (#128)
* day 12 * Update BruteForce.cpp * Update KMP.cpp
1 parent 0937cf5 commit 4518155

File tree

4 files changed

+319
-0
lines changed

4 files changed

+319
-0
lines changed

Diff for: day12/C++/BruteForce.cpp

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
/**
2+
* @date 04/01/18
3+
* @author SPREEHA DUTTA
4+
*/
5+
6+
#include <bits/stdc++.h>
7+
using namespace std;
8+
9+
int search(string s,string w)
10+
{
11+
int i,j;int k=-1;int c=0;
12+
int m=w.length();
13+
int n=s.length();
14+
for(i=0;i<=n-m;i++)
15+
{
16+
for(j=0,c=i;j<m;j++,c++)
17+
if(s[c]!=w[j])
18+
break;
19+
if(j==m)
20+
{
21+
k=i;
22+
break;
23+
}
24+
}
25+
return k;
26+
}
27+
int main()
28+
{
29+
string s,w;
30+
getline(cin,s);
31+
getline(cin,w);
32+
int t=search (w,s);
33+
cout<<"\n"<<t<<endl;
34+
}
35+

Diff for: day12/C++/KMP.cpp

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/**
2+
* @date 04/01/18
3+
* @author SPREEHA DUTTA
4+
*/
5+
6+
#include <bits/stdc++.h>
7+
using namespace std;
8+
void calc(string w,int m,int p[])
9+
{
10+
int l=0,i=1;p[0]=0;
11+
while(i<m)
12+
{
13+
if(p[i]==p[l])
14+
{
15+
l++;
16+
p[i]=l;
17+
i++;
18+
}
19+
else
20+
{
21+
if(l!=0)
22+
l=p[l-1];
23+
else
24+
{
25+
p[i]=l;
26+
i++;
27+
}
28+
}
29+
}
30+
}
31+
int search(string s,string w)
32+
{
33+
int i=0,j=0;int k=-1;
34+
int m=w.length();
35+
int n=s.length();
36+
int arr[m];
37+
calc(w,m,arr);
38+
while(i<n)
39+
{
40+
if(w[j]==s[i])
41+
{
42+
j++;
43+
i++;
44+
}
45+
if(j==m)
46+
{
47+
k=i-j;
48+
break;
49+
}
50+
else if(i<n && w[j]!=s[i])
51+
{
52+
if(j!=0)
53+
j=arr[j-1];
54+
else
55+
i++;
56+
}
57+
}
58+
return k;
59+
}
60+
int main()
61+
{
62+
string s,w;
63+
getline(cin,s);
64+
getline(cin,w);
65+
int t=search (w,s);
66+
cout<<"\n"<<t<<endl;
67+
}

Diff for: day12/C++/RabinKarp.cpp

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#include <bits/stdc++.h>
2+
using namespace std;
3+
4+
int search(string s,string w,int q)
5+
{
6+
int i=0,j=0;int k=-1;
7+
int m=w.length();
8+
int n=s.length();
9+
int sc=0,wc=0,h=1;
10+
int d=256;
11+
for(i=0;i<m-1;i++)
12+
h=(h*d)%q;
13+
for(i=0;i<m;i++)
14+
{
15+
wc=(d*wc+w[i])%q;
16+
sc=(d*sc+s[i])%q;
17+
}
18+
for(i=0;i<n-m;i++)
19+
{
20+
if(sc==wc)
21+
{
22+
for(j=0;j<m;j++)
23+
if(s[i+j]!=w[j])
24+
break;
25+
if(j==m)
26+
{
27+
k=i;
28+
break;
29+
}
30+
}
31+
if(i<n-m)
32+
{
33+
sc=(d*(sc-s[i]*h)+s[i+m])%q;
34+
if(sc<0)
35+
sc+=q;
36+
}
37+
}
38+
return k;
39+
}
40+
int main()
41+
{
42+
string s,w;
43+
getline(cin,s);
44+
getline(cin,w);
45+
int t=search (w,s,101);
46+
cout<<"\n"<<t<<endl;
47+
}

Diff for: day12/README.md

+170
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,45 @@ print(subStringSearch("helloworld","hop"))
132132
print(subStringSearch("abcrxyzgf","xyz"))
133133
```
134134

135+
## C++ Implementation
136+
137+
### [Solution](./C++/BruteForce.cpp)
138+
139+
```C++
140+
/**
141+
* @date 04/01/18
142+
* @author SPREEHA DUTTA
143+
*/
144+
#include <bits/stdc++.h>
145+
using namespace std;
146+
int search(string s,string w)
147+
{
148+
int i,j;int k=-1;int c=0;
149+
int m=w.length();
150+
int n=s.length();
151+
for(i=0;i<=n-m;i++)
152+
{
153+
for(j=0,c=i;j<m;j++,c++)
154+
if(s[c]!=w[j])
155+
break;
156+
if(j==m)
157+
{
158+
k=i;
159+
break;
160+
}
161+
}
162+
return k;
163+
}
164+
int main()
165+
{
166+
string s,w;
167+
getline(cin,s);
168+
getline(cin,w);
169+
int t=search (w,s);
170+
cout<<"\n"<<t<<endl;
171+
}
172+
```
173+
135174
### Java Implementation
136175
137176
#### [Solution](./Java/Bruteforce.java)
@@ -239,6 +278,79 @@ print(kmp("helloworld","hop"))
239278
print(kmp("ABABDABACDABABCABAB","ABABCABAB"))
240279
```
241280

281+
## C++ Implementation
282+
283+
### [Solution](./C++/KMP.cpp)
284+
285+
```C++
286+
/**
287+
* @date 04/01/18
288+
* @author SPREEHA DUTTA
289+
*/
290+
291+
#include <bits/stdc++.h>
292+
using namespace std;
293+
void calc(string w,int m,int p[])
294+
{
295+
int l=0,i=1;p[0]=0;
296+
while(i<m)
297+
{
298+
if(p[i]==p[l])
299+
{
300+
l++;
301+
p[i]=l;
302+
i++;
303+
}
304+
else
305+
{
306+
if(l!=0)
307+
l=p[l-1];
308+
else
309+
{
310+
p[i]=l;
311+
i++;
312+
}
313+
}
314+
}
315+
}
316+
int search(string s,string w)
317+
{
318+
int i=0,j=0;int k=-1;
319+
int m=w.length();
320+
int n=s.length();
321+
int arr[m];
322+
calc(w,m,arr);
323+
while(i<n)
324+
{
325+
if(w[j]==s[i])
326+
{
327+
j++;
328+
i++;
329+
}
330+
if(j==m)
331+
{
332+
k=i-j;
333+
break;
334+
}
335+
else if(i<n && w[j]!=s[i])
336+
{
337+
if(j!=0)
338+
j=arr[j-1];
339+
else
340+
i++;
341+
}
342+
}
343+
return k;
344+
}
345+
int main()
346+
{
347+
string s,w;
348+
getline(cin,s);
349+
getline(cin,w);
350+
int t=search (w,s);
351+
cout<<"\n"<<t<<endl;
352+
}
353+
```
242354
243355
## C) Z Algorithm
244356
@@ -260,6 +372,64 @@ To Be Added
260372
To Be Added
261373
```
262374

375+
## C++ Implementation
376+
377+
### [Solution](./C++/RabinKarp.cpp)
378+
379+
```C++
380+
/**
381+
* @date 04/01/18
382+
* @author SPREEHA DUTTA
383+
*/
384+
#include <bits/stdc++.h>
385+
using namespace std;
386+
387+
int search(string s,string w,int q)
388+
{
389+
int i=0,j=0;int k=-1;
390+
int m=w.length();
391+
int n=s.length();
392+
int sc=0,wc=0,h=1;
393+
int d=256;
394+
for(i=0;i<m-1;i++)
395+
h=(h*d)%q;
396+
for(i=0;i<m;i++)
397+
{
398+
wc=(d*wc+w[i])%q;
399+
sc=(d*sc+s[i])%q;
400+
}
401+
for(i=0;i<n-m;i++)
402+
{
403+
if(sc==wc)
404+
{
405+
for(j=0;j<m;j++)
406+
if(s[i+j]!=w[j])
407+
break;
408+
if(j==m)
409+
{
410+
k=i;
411+
break;
412+
}
413+
}
414+
if(i<n-m)
415+
{
416+
sc=(d*(sc-s[i]*h)+s[i+m])%q;
417+
if(sc<0)
418+
sc+=q;
419+
}
420+
}
421+
return k;
422+
}
423+
int main()
424+
{
425+
string s,w;
426+
getline(cin,s);
427+
getline(cin,w);
428+
int t=search (w,s,101);
429+
cout<<"\n"<<t<<endl;
430+
}
431+
```
432+
263433
## E) Boyer Moore Algorithm
264434
265435
### JavaScript Implementation

0 commit comments

Comments
 (0)