AlgoExpert:验证子序列,未通过所有测试用例

AlgoExpert: Validate Subsequence, not passing all test cases

问题:在 AlgoExpert 上验证子序列。给定两个非空整数数组,编写一个函数来确定第二个数组是否是第一个数组的子序列。

我的代码没有通过所有测试用例,我做错了什么?

public static boolean isValidSubsequence(List<Integer> array, List<Integer> sequence) {
    int arrayIndex = 0;
    int sequenceIndex = 0;
    
    while(arrayIndex < array.size() && sequenceIndex < sequence.size()){
        if(array.get(arrayIndex).equals(sequence.get(sequenceIndex))){
            sequenceIndex++;
        } else {
            arrayIndex++;
        }
    }
    if(sequenceIndex == (sequence.size())){
        return true;
    }
    return false;
}

如果您在两个数组中都匹配了一个字符,您应该移动两个指针而不是只移动一个。

if(array.get(arrayIndex).equals(sequence.get(sequenceIndex))){
    sequenceIndex++;
}
arrayIndex++;        

感谢大家的帮助! 更新的解决方案:

  public static boolean isValidSubsequence(List<Integer> array, List<Integer> sequence) {
    int arrayIndex = 0;
    int sequenceIndex = 0;
    
    while(arrayIndex < array.size() && sequenceIndex < sequence.size()){
        if(array.get(arrayIndex).equals(sequence.get(sequenceIndex))){
            sequenceIndex++;
            arrayIndex++;       
    } else {
            arrayIndex++;
        }
    if(sequenceIndex == (sequence.size())){
        return true;
    }
}
            return false;
}

这个解决方案通过了所有测试,加油!

    import java.util.*;

class Program {
  public static boolean isValidSubsequence(List<Integer> array, List<Integer> sequence) {
    // Write your code here.
    int k=0;
    int truecounter=0;
    int totalsize=sequence.size();
    for(int i=0; i<array.size(); i++){
      if(k<totalsize){
        int squencearray_value = sequence.get(k);
        if(squencearray_value == array.get(i)){
          truecounter=truecounter+1;
          k++;
        }
      }else{
        if(truecounter==totalsize)
          return true;
        else 
          return false;
    
      }
      
    }

     if(truecounter==totalsize)
          return true;
        else 
          return false;
    
   // return false;
  }
}