33,028
社区成员
发帖
与我相关
我的任务
分享
bool isInA(int c);
int findB(int ab[], int l, int r)
{
int beg = l;
int n = r - l + 1;
while (n > 0 && isInA(ab[l]))
{
int mid = ab[n/2];
if (isInA[mid])
{
l = mid + 1;
}
else
{
r = mid;
}
n /= 2;
}
return l - beg;
}

public static void main(String[] args)
{
//生成String 数组
String str="1231907812345abcdefghijklmnopqrstuvwxyz";
char[] a=str.toCharArray();
String[] BigArray=new String[a.length];
for(int i=0;i<a.length;i++)
{
BigArray[i]=Character.toString(a[i]);
}
//开始二分法
int start=0;
int end=BigArray.length;
System.out.println("i->start->end->BigArray[i]->BigArray[i+1]");
for(int i;;)
{
i=(start+end)/2;
if(!isNum(BigArray[i])==isNum(BigArray[i+1]))
{
System.out.println(i+"-->"+start+"-->"+end+"-->"+BigArray[i]+"-->"+BigArray[i+1]);
break;
}
System.out.println(i+"-->"+start+"-->"+end+"-->"+BigArray[i]+"-->"+BigArray[i+1]);
if(isNum(BigArray[i]))
{
start=i;
}
else
{
end=i;
}
}
}
//判断字母还是数字
public static boolean isNum(String str)
{
try
{
Integer.parseInt(str);
}
catch(Exception e)
{
return false;
}
return true;
}