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;
}
}
问题:在 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; } }