判断一个序列是否是另一个序列的子序列

解题思路:遍历子序列,如果相等,子序列和主序列都同时向后移动,如果不相等,主序列移动,子序列不移动.如果到达主序列的末尾,返回false,其他返回true.

时间复杂度O(n)

public static void main(String[] args) {
        int a[] = {1,3,4,2};
        int b[] = {1,2,4,3,1,4,6,5};
        boolean b1 = subArrayFlag(a, b);
        System.out.println(b1);

    }

    /**
     * 判断一个子序列是否是另一个序列的子序列 时间复杂度O(n)
     * @param a
     * @param b
     * @return
     */
    public static boolean subArrayFlag(int[] a,int [] b){
        int i=0;
        int j=0;
        int n=a.length;
        int m=b.length;
        while (i < n)
        {
            if (a[i] == b[j]) /** 相等时,下标同时向后移动一个位置. */
            {
                i++;
                j++;
            }
            else
            {
                j++;  /** 不等时,只将b[]数组下标向后移动一个位置. */
                if (j == m)  /** 当b[]数组找完时,指向了第m+1个不存在的元素,则不符合。 */
                    return false;
            }
        }
        return true;
    }

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/87934847
今日推荐