@@ -19,36 +19,29 @@ export const getSortData = arr => {
19
19
}
20
20
// 反推字典表
21
21
export const getDictionary = ( text , input ) => {
22
- let words = input . trim ( ) . split ( ' ')
23
- let res = [ ]
22
+ input = input . replace ( / \s / g , ' ')
23
+ const keys = [ ]
24
24
const dfs = word => {
25
- let keys = [ ] , len = word . length
25
+ let len = word . length ,
26
+ start = 0 , end = 0 , index = 0 , step = 0
26
27
for ( let i = len ; i > 0 ; i -- ) {
27
28
for ( let j = 0 ; j < len + 1 - i ; j ++ ) {
28
- keys . push ( word . substr ( j , i ) )
29
+ let curr = word . substr ( j , i )
30
+ index = getIndex ( text , curr , keys )
31
+ if ( index === - 1 ) continue
32
+ start = word . indexOf ( curr )
33
+ end = start + curr . length
34
+ step = index + curr . length
35
+ values . push ( curr )
36
+ while ( step > index ) keys . push ( index ++ )
37
+ if ( start - 0 ) dfs ( word . slice ( 0 , start ) )
38
+ if ( end - len ) dfs ( word . slice ( end , len ) )
39
+ return
29
40
}
30
41
}
31
- let start = 0 , end = 0 , index = 0 , step = 0
32
- let flag = true
33
- for ( let key of keys ) {
34
- index = text . indexOf ( key )
35
- if ( index === - 1 ) continue
36
- if ( res . length && res . indexOf ( index ) > - 1 ) continue
37
- start = word . indexOf ( key )
38
- end = start + key . length
39
- step = index + key . length
40
- flag = false
41
- break
42
- }
43
- if ( flag ) return
44
- while ( step > index ) res . push ( index ++ )
45
- if ( start - 0 ) dfs ( word . slice ( 0 , start ) )
46
- if ( end - len ) dfs ( word . slice ( end , len ) )
47
- }
48
- for ( let word of words ) {
49
- dfs ( word )
50
42
}
51
- return res
43
+ dfs ( input )
44
+ return keys
52
45
}
53
46
// 深拷贝 (这个随便复制的)
54
47
export const deepCopy = data => {
0 commit comments