@@ -19,36 +19,29 @@ export const getSortData = arr => {
1919}
2020// 反推字典表
2121export const getDictionary = ( text , input ) => {
22- let words = input . trim ( ) . split ( ' ')
23- let res = [ ]
22+ input = input . replace ( / \s / g , ' ')
23+ const keys = [ ]
2424 const dfs = word => {
25- let keys = [ ] , len = word . length
25+ let len = word . length ,
26+ start = 0 , end = 0 , index = 0 , step = 0
2627 for ( let i = len ; i > 0 ; i -- ) {
2728 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
2940 }
3041 }
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 )
5042 }
51- return res
43+ dfs ( input )
44+ return keys
5245}
5346// 深拷贝 (这个随便复制的)
5447export const deepCopy = data => {
0 commit comments