找到最长的空白!【难度:1级】:
答案1:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
var binary = Convert. ToString ( num, 2 ) ;
return binary. Trim ( '0' ) . Split ( '1' ) . Select ( s = > s. Length) . Max ( ) ;
}
}
答案2:
using System;
using System. Linq;
using System. Text. RegularExpressions;
public class Kata
{
public static int Gap ( int num)
{
var res = Regex. Matches ( Convert. ToString ( num, 2 ) , @"0+(?=1)" ) ;
return res. Count > 0 ? res. Cast < Match > ( )
. OrderBy ( s = > s. Length)
. Last ( )
. Length
: 0 ;
}
}
答案3:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
return Convert. ToString ( num, 2 ) . Split ( '1' ) . Skip ( 1 ) . Reverse ( ) . Skip ( 1 ) . Max ( x = > x. Length) ;
}
}
答案4:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
return Convert. ToString ( num, 2 )
. TrimEnd ( '0' )
. Split ( '1' )
. Max ( x = > x. Length) ;
}
}
答案5:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
return String. Concat ( Convert. ToString ( num, 2 ) . Reverse ( ) . SkipWhile ( p = > p== '0' ) )
. Split ( '1' ) . Max ( p = > p. Length) ;
}
}
答案6:
using System;
using System. Collections. Generic;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
var bitString = Convert. ToString ( num, 2 ) ;
var gapList = new List < string > ( ) ;
var currentGapString = string . Empty;
var foundOne = false ;
foreach ( var currentBitValue in bitString)
{
if ( currentBitValue. Equals ( '1' ) )
{
foundOne = true ;
if ( ! string . IsNullOrEmpty ( currentGapString) )
{
gapList. Add ( currentGapString) ;
currentGapString = string . Empty;
}
}
if ( foundOne & amp; & amp; currentBitValue. Equals ( '0' ) )
{
currentGapString + = currentBitValue;
}
}
if ( gapList. Count == 0 )
{
return 0 ;
}
return gapList. Select ( s = > s. Length) . Max ( ) ;
}
}
答案7:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num)
{
return Convert. ToString ( num, 2 ) . Split ( '1' ) . Reverse ( ) . Skip ( 1 ) . Max ( s= > s. Length) ;
}
}
答案8:
using System;
public class Kata
{
public static int Gap ( int num)
{
int count= - 1 ;
int max= 0 ;
for ( int i= 0 ; i< 32 ; i++ )
{
if ( ( num & amp; ( 1 < < i) ) > 0 )
{
if ( count> max) max= count;
count= 0 ;
}
else if ( count>= 0 ) count++ ;
}
return max;
}
}
答案9:
using System;
using System. Linq;
using System. Text. RegularExpressions;
public class Kata
{
public static int Gap ( int num)
{
var r = Regex. Matches ( Convert. ToString ( num, 2 ) , @"0+1" ) . Where ( m= > m. Success) ;
return r. Any ( ) ? r. Select ( m= > m. Value. Length- 1 ) . Max ( ) : 0 ;
}
}
答案10:
using System;
using System. Linq;
public class Kata
{
public static int Gap ( int num) = > Convert. ToString ( num, 2 ) . Trim ( '0' ) . Split ( '1' ) . Select ( s = > s. Length) . Max ( ) ;
}