我正在尝试从CodingBat解决这个问题。
我们会说数组中的“镜像”部分是一组连续的 元素,如数组中的某个位置,相同的组出现在 相反的顺序。例如,{1,2,3,8中最大的镜像部分 9,3,2,1}是长度3({1,2,3}部分)。返回的大小 在给定数组中找到的最大镜像部分。
maxMirror([1,2,3,8,9,3,2,1])→3 maxMirror([1,2,1,4])→3 maxMirror([7,1,2,9,7,2,1])→2
public int maxMirror(int[] nums)
{
int count = 0;
int max = 0;
int min = 0;
String abc = "";
for(int i=0; i<nums.length; i++)
{
abc += nums[i];
}//
for(int i=0, k = abc.length(); i<abc.length(); i++, k--)
{
for(int j=i, l = abc.length()-i; j<abc.length(); j++, l--)
{
if(abc.substring(i,j).equals(abc.substring(k,l)))
min = abc.substring(i,j).length();
if(min > max)
max = min;
}
}
count = max;
return count;
}
我认为将数组的所有元素插入字符串是一个非常好的主意,因为字符串类有自己的函数,如substring。
我认为我对这个问题的算法简单,灵活,可靠,但它不像我想象的那样有效。我收到异常错误,抱怨字符串的边界。
我该怎么办?