检查数组是否包含在另一个数组中

时间:2014-12-09 00:57:52

标签: java arrays arraylist

问题是:检查数组arr2是否以相同的顺序包含在arr1中。 arr2可以包含在arr1中的任何位置。

public boolean contains(String[] arr1, String[] arr2)
{
   int length  = 0;
   if(arr2.length > arr1.length)
      return false;
   for(int i = 0; i < arr2.length; i++)
   {
      if(arr2[i] == arr1[i])
          length++;
   }
   if(length == arr2.length)
      return true;
   else
      return false;
}

TESTER:包含({&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;},{&#34; 1&#34;,&#34; 2&#34;})→true

RUN:TRUE

TESTER:包含({&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;},{&#34; 2&#34;,&#34; 3&#34;})→true

RUN:FALSE

TESTER:包含({&#34; 1&#34;,&#34; 2&#34;,&#34; 3&#34;},{&#34; 2&#34;,&#34; 1&#34;})→false

RUN:TRUE

TESTER:包含({&#34; MARY&#34;,&#34; A&#34;,&#34; LITTLE&#34;,&#34; LAMB&#34;},{&#34; A&#34;,&#34; LITTLE&#34;,&#34; LAMB&#34;})→true

RUN:FALSE

TESTER:包含({&#34; MARY&#34;,&#34; A&#34;,&#34; LITTLE&#34;,&#34; LAMB&#34;},{&#34; MARY&#34;,&#34; A&#34;,&#34; LITTLE&#34;,&#34; LAMB&#34;})→true

RUN:TRUE

我不知道自己哪里出错了。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

  • 使用arr[1].equals(arr[2])代替arr[1] == arr[2]
  • 应该在循环中判断不是在循环之前

我修改代码:

public static boolean contains(String[] arr1, String[] arr2) {
    int length = 0;

    for (int i = 0; i < arr1.length; i++) {
        if (arr2[length].equals(arr1[i])) {
            length++;
        } else {
            length = 0;
        }
        if (length == arr2.length)
            return true;
    }
    return false;
}

答案 1 :(得分:0)

您只是从一开始就比较两个数组;当您开始在arr1中的其他位置进行比较时,您还需要考虑这些情况。例如,如果您开始在arr1的第二个元素进行比较(第四个示例相同),则在第二个示例中将获得TRUE。