@@ -7,9 +7,10 @@ const isOneAway = (str1, str2) => {
7
7
if ( str1 . length === str2 . length ) {
8
8
let errorCount = 0 ;
9
9
for ( let i = 0 ; i < str1 . length ; i ++ ) {
10
- if ( str1 [ i ] ! == str2 [ i ] ) {
11
- errorCount ++ ;
10
+ if ( str1 [ i ] = == str2 [ i ] ) {
11
+ continue ;
12
12
}
13
+ errorCount ++ ;
13
14
if ( errorCount > 1 ) {
14
15
return false ;
15
16
}
@@ -18,19 +19,32 @@ const isOneAway = (str1, str2) => {
18
19
let errorCount = 0 ;
19
20
const longestStr = findLongestStr ( str1 , str2 ) ;
20
21
let x = 0 ;
21
- for ( let i = 0 ; i < longestStr ; i ++ ) {
22
- if ( str1 [ i ] !== str2 [ x ] ) {
23
- errorCount ++ ;
22
+ for ( let i = 0 ; i < longestStr . length ; i ++ ) {
23
+ let currentChar1 = str1 [ i ] ;
24
+ let currentChar2 = str2 [ x ]
25
+ let nextChar1 = str1 [ i + 1 ] ;
26
+ let nextChar2 = str2 [ x + 1 ] ;
27
+ if ( str1 [ i ] === str2 [ x ] ) {
24
28
x ++ ;
29
+ continue ;
25
30
}
31
+ errorCount ++ ;
26
32
if ( errorCount > 1 ) {
27
33
return false ;
28
34
}
29
- x ++ ;
35
+ if ( currentChar1 === nextChar2 ) {
36
+ x ++ ;
37
+ i -- ;
38
+ continue ;
39
+ } else if ( currentChar2 === nextChar1 ) {
40
+ continue ;
41
+ }
42
+ errorCount ++ ;
43
+ return false ;
30
44
}
31
45
// ***** Helper functions ********
32
46
function findLongestStr ( str1 , str2 ) {
33
- str1 > str2 ? str1 : str2 ;
47
+ return ( str1 . length > str2 . length ? str1 : str2 ) ;
34
48
}
35
49
}
36
50
return true ;
@@ -41,3 +55,14 @@ console.log(isOneAway('pale', 'ple') === true);
41
55
console . log ( isOneAway ( 'pales' , 'pale' ) === true ) ;
42
56
console . log ( isOneAway ( 'pale' , 'bale' ) === true ) ;
43
57
console . log ( isOneAway ( 'pale' , 'bake' ) === false ) ;
58
+ console . log ( isOneAway ( 'paleo' , 'palseo' ) === true ) ;
59
+ console . log ( isOneAway ( 'p' , 'b' ) === true ) ;
60
+ console . log ( isOneAway ( '' , '' ) === true ) ;
61
+ console . log ( isOneAway ( 'p' , 'p' ) === true ) ;
62
+ console . log ( isOneAway ( 'pale' , 'ppalpe' ) === false ) ;
63
+
64
+ console . log ( isOneAway ( 'ple' , 'pale' ) === true ) ;
65
+ console . log ( isOneAway ( 'pale' , 'pales' ) === true ) ;
66
+ console . log ( isOneAway ( 'bale' , 'pale' ) === true ) ;
67
+ console . log ( isOneAway ( 'bake' , 'pale' ) === false ) ;
68
+ console . log ( isOneAway ( 'palseo' , 'paleo' ) === true ) ;
0 commit comments