/// <summary>
/// B*A*C*D格式
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
static int GetLenA(string str)
{
// 二分法获取A为止
int min = 0; int max = str.Length - 1;
while (min < max)
{
var mid = (min + max) / 2;
switch (str[mid])
{
case 'B':
if (min == mid) return 0;
min = mid;
break;
case 'A':
min = max = mid;
break;
case 'C':
case 'D':
if (max == mid) return 0;
max = mid;
break;
}
}
var len = 1;
min = min + 1; max = max - 1;
while (min <= str.Length - 1)
{
if (str[min] == 'A')
{
len++;
min++;
}
else
{
break;
}
}
while (max >= 0)
{
if (str[max] == 'A')
{
len++;
max--;
}
else
{
break;
}
}
return len;
}