第一种
var str = 'akcabeacab' ;
for ( var i = 0 ; i <= str. length - 4 ; i++ ) {
var str2 = str. slice ( i, i + 4 ) ;
var aim = 'abac'
while ( aim. length > 0 ) {
var index = str2. indexOf ( aim[ aim. length - 1 ] ) ;
if ( index == - 1 ) { break ; }
str2 = str2. replace ( aim[ aim. length - 1 ] , '' ) ;
aim = aim. replace ( aim[ aim. length - 1 ] , '' ) ;
}
console. log ( aim. length) ;
}
第二种
function fn ( ) {
if ( str. length == 0 || aim. length == 0
|| aim. length > str. length) return null ;
for ( var i = 0 ; i < arr. length - 1 ; i++ ) {
var str2 = str. slice ( i, i + 4 ) . split ( '' ) . sort ( ( a, b) => {
return a. charCodeAt ( ) - b. charCodeAt ( )
} ) . join ( "" ) ;
if ( str2 == 'aabc' ) {
return i;
}
}
return 'no'
}
fn ( )
第三种
function fn ( ) {
var str = 'akcabeacab' ;
var aim = 'abac' ;
let obj = { } ;
for ( var j = 0 ; j < aim. length; j++ ) {
if ( obj[ aim[ j] ] ) {
obj[ aim[ j] ] ++ ;
} else {
obj[ aim[ j] ] = 1 ;
}
}
for ( var i = 0 ; i <= str. length - aim. length; i++ ) {
var str2 = str. slice ( i, i + aim. length) ;
fn2 ( JSON . stringify ( obj) , str2, i) ;
}
}
function fn2 ( obj, str2, index) {
obj = JSON . parse ( obj)
for ( var j = 0 ; j < str2. length; j++ ) {
if ( obj[ str2[ j] ] == 0 || ! obj[ str2[ j] ] ) return false ;
obj[ str2[ j] ] -- ;
}
return index
}
console. log ( fn ( ) ) ;