描述:
能否数出蜂巢里有多少只蜜蜂?
1.蜜蜂可以面向上下左右。
2.蜜蜂可以与其他蜜蜂共享身体。
3.输入二维数组(char[][]),返回整数(int)。
例如:
bee.bee
.e..e.. => 5
.b..eeb
bee.bee
e.e.e.e => 8
eeb.eeb
CodeWar:
using System;
using System.Text.RegularExpressions;
public class Dinglemouse
{
public static int HowManyBees(char[][] hive)
{
if (hive == null || hive.Length == 0)
{
return 0;
}
int row_count = hive.Length;
int column_count = hive[0].Length;
string[] row_string = new string[row_count];
string[] column_string = new string[column_count];
int total_bee_count = 0;
for (int i = 0; i < row_count; i++)
{
for (int j = 0; j < column_count; j++)
{
row_string[i] += hive[i][j];
}
}
for (int i = 0; i < column_count; i++)
{
for (int j = 0; j < row_count; j++)
{
column_string[i] += hive[j][i];
}
}
foreach (var item in row_string)
{
total_bee_count += Regex.Matches(item, @"bee").Count;
total_bee_count += Regex.Matches(item, @"eeb").Count;
}
foreach (var item in column_string)
{
total_bee_count += Regex.Matches(item, @"bee").Count;
total_bee_count += Regex.Matches(item, @"eeb").Count;
}
return total_bee_count;
}
}
using System.Collections.Generic;
using System.Linq;
public class Dinglemouse
{
struct Pos { public int Column; public int Row; }
public static int HowManyBees(char[][] hive)
{
if(null == hive) return 0;
int beeCount = 0;
for(int row = 0; row < hive.Length; row++)
{
for(int column = 0; column < hive[row].Length; column++)
{
if(hive[row][column] == 'b')
{
var pos = new Pos { Column = column, Row = row };
beeCount += GetBeeCount(ref hive, pos);
}
}
}
return beeCount;
}
private static int GetBeeCount(ref char[][] hive, Pos bee)
{
int beeCount = 0;
if (bee.Row >= 2 && hive[bee.Row - 1][bee.Column] == 'e' && hive[bee.Row - 2][bee.Column] == 'e') beeCount++;
if (bee.Row < hive.Length-2 && hive[bee.Row + 1][bee.Column] == 'e' && hive[bee.Row + 2][bee.Column] == 'e') beeCount++;
if (bee.Column >= 2 && hive[bee.Row][bee.Column-1] == 'e' && hive[bee.Row][bee.Column-2] == 'e') beeCount++;
if (bee.Column < hive[bee.Row].Length-2 && hive[bee.Row][bee.Column + 1] == 'e' && hive[bee.Row][bee.Column+2] == 'e') beeCount++;
return beeCount;
}
}