File tree 4 files changed +195
-0
lines changed
docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps
src/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps
4 files changed +195
-0
lines changed Original file line number Diff line number Diff line change
1
+ # [ Two Strings] ( https://www.hackerrank.com/challenges/two-strings )
2
+
3
+ - Difficulty: ` #easy `
4
+ - Category: ` #ProblemSolvingBasic `
5
+
6
+ ## Clarification
7
+
8
+ The problem asks to find if there is a substring between 2 words,
9
+ it does not require finding a particular one that meets a certain property,
10
+ not counting all the possible ones.
11
+
12
+ With that in mind, simply find the first 1-letter intersection between two word
13
+ to return "YES".
14
+ The worst case is to return "NO" after going through both words letter by letter.
Original file line number Diff line number Diff line change
1
+ # [ Two Strings] ( https://www.hackerrank.com/challenges/two-strings )
2
+
3
+ - Difficulty: ` #easy `
4
+ - Category: ` #ProblemSolvingBasic `
5
+
6
+ Given two strings, determine if they share a common substring.
7
+ A substring may be as small as one character.
8
+
9
+ ## Example
10
+
11
+ ` s1 = 'and' `
12
+ ` s1 = 'art' `
13
+
14
+ These share the common substring ` a ` .
15
+
16
+ ` s1 = 'be' `
17
+ ` s1 = 'cat' `
18
+
19
+ These do not share a substring.
20
+
21
+ ## Function Description
22
+
23
+ Complete the function twoStrings in the editor below.
24
+
25
+ twoStrings has the following parameter(s):
26
+
27
+ - ` string s1 ` : a string
28
+ - ` string s2 ` : another string
29
+
30
+ ## Returns
31
+
32
+ - ` string ` : either YES or NO
33
+
34
+ ## Input Format
35
+
36
+ The first line contains a single integer , the number of test cases.
37
+
38
+ The following pairs of lines are as follows:
39
+
40
+ The first line contains string ` s1 ` .
41
+ The second line contains string ` s2 ` .
42
+
43
+ ## Constraints
44
+
45
+ - ` s1 ` and ` s2 ` consist of characters in the range ascii[ a-z] .
46
+ - $ 1 \leq p \leq 10 $
47
+ - $ 1 \leq |s1|, |s2| \leq 10^5 $
48
+
49
+ ## Output Format
50
+
51
+ For each pair of strings, return ` YES ` or ` NO ` .
52
+
53
+ ## Sample Input
54
+
55
+ ``` text
56
+ 2
57
+ hello
58
+ world
59
+ hi
60
+ world
61
+ ```
62
+
63
+ ## Sample Output
64
+
65
+ ``` text
66
+ YES
67
+ NO
68
+ ```
69
+
70
+ ## Explanation
71
+
72
+ We have pairs to check:
73
+
74
+ 1 . ` s1 = "hello" ` , ` s2 = "world" ` . The substrings ` "o" ` and ` "l" `
75
+ are common to both strings.
76
+ 2 . ` a = "hi" ` , ` b = "world" ` . ` s1 ` and ` s2 ` share no common substrings.
77
+
78
+ ## Appendix
79
+
80
+ [ Solution notes] ( two-strings-solution-notes.md )
Original file line number Diff line number Diff line change
1
+ /**
2
+ * @link Problem definition [[docs/hackerrank/interview_preparation_kit/dictionaries_and_hashmaps/two-strings.md]]
3
+ */
4
+
5
+ const __YES__ = 'YES' ;
6
+ const __NO__ = 'NO' ;
7
+
8
+ export function twoStringsCompute ( s1 , s2 ) {
9
+ for ( const char of s1 ) {
10
+ if ( s2 . includes ( char ) ) {
11
+ return true ;
12
+ }
13
+ }
14
+ return false ;
15
+ }
16
+
17
+ export function twoStrings ( s1 , s2 ) {
18
+ return twoStringsCompute ( s1 , s2 ) ? __YES__ : __NO__ ;
19
+ }
20
+
21
+ export default { twoStrings } ;
Original file line number Diff line number Diff line change
1
+ import { describe , expect , it } from '@jest/globals' ;
2
+ import { logger as console } from '../../../logger.js' ;
3
+
4
+ import { twoStrings } from './two_strings.js' ;
5
+
6
+ const TEST_CASES = [
7
+ {
8
+ title : 'Example 1 and 2' ,
9
+ comparing : [
10
+ {
11
+ s1 : 'and' ,
12
+ s2 : 'art' ,
13
+ expected : 'YES'
14
+ } ,
15
+ {
16
+ s1 : 'be' ,
17
+ s2 : 'cat' ,
18
+ expected : 'NO'
19
+ }
20
+ ]
21
+ } ,
22
+ {
23
+ title : 'Sample Test Case 0' ,
24
+ comparing : [
25
+ {
26
+ s1 : 'hello' ,
27
+ s2 : 'world' ,
28
+ expected : 'YES'
29
+ } ,
30
+ {
31
+ s1 : 'hi' ,
32
+ s2 : 'world' ,
33
+ expected : 'NO'
34
+ }
35
+ ]
36
+ } ,
37
+ {
38
+ title : 'Sample Test Case 6' ,
39
+ comparing : [
40
+ {
41
+ s1 : 'wouldyoulikefries' ,
42
+ s2 : 'abcabcabcabcabcabc' ,
43
+ expected : 'NO'
44
+ } ,
45
+ {
46
+ s1 : 'hackerrankcommunity' ,
47
+ s2 : 'cdecdecdecde' ,
48
+ expected : 'YES'
49
+ } ,
50
+ {
51
+ s1 : 'jackandjill' ,
52
+ s2 : 'wentupthehill' ,
53
+ expected : 'YES'
54
+ } ,
55
+ {
56
+ s1 : 'writetoyourparents' ,
57
+ s2 : 'fghmqzldbc' ,
58
+ expected : 'NO'
59
+ }
60
+ ]
61
+ }
62
+ ] ;
63
+
64
+ describe ( 'two_strings' , ( ) => {
65
+ it ( 'twoStrings test cases' , ( ) => {
66
+ expect . assertions ( 8 ) ;
67
+
68
+ TEST_CASES . forEach ( ( testCase ) => {
69
+ testCase . comparing . forEach ( ( test ) => {
70
+ const answer = twoStrings ( test . s1 , test . s2 ) ;
71
+
72
+ console . debug (
73
+ `checkMagazine(${ test . s1 } , ${ test . s2 } ) solution found: ${ answer } `
74
+ ) ;
75
+
76
+ expect ( answer ) . toStrictEqual ( test . expected ) ;
77
+ } ) ;
78
+ } ) ;
79
+ } ) ;
80
+ } ) ;
You can’t perform that action at this time.
0 commit comments