文字列SおよびQクエリが与えられた場合、各クエリには文字列Tが含まれます。TがSのサブシーケンスであれば "Yes"、それ以外の場合は "No"を出力します。 私はアルゴリズムを学び、それらを実装しようとしています。 私はJavaで以下のコードを書かれている:私はこれとEclipseでのデバッグしようとした文字列のサブシーケンスのクエリ
import java.util.Stack;
public class QueriesOnStringSubsequence {
public boolean subSequence(String original, String query) {
Stack<Character> s1 = new Stack<Character>();
Stack<Character> s2 = new Stack<Character>();
for (int i = 0; i < original.length(); i++) {
s1.push(original.charAt(i));
System.out.println(s1.peek());
}
for (int i = 0; i < query.length(); i++) {
s2.push(query.charAt(i));
System.out.println(s2.peek());
}
while (!s1.isEmpty() || !s2.isEmpty()) {
Character s1Top = s1.peek();
Character s2Top = s2.peek();
if (s1Top == s2Top) {
s1.pop();
//System.out.println(i);
s2.pop();
return true;
}
System.out.print("True");
}
System.out.print("False");
return false;
}
public static void main(String[] args) {
QueriesOnStringSubsequence ob = new QueriesOnStringSubsequence();
ob.subSequence("geeksforgeeks", "gg");
}
}
、それがあれば状態に入ることはありません。誰かが私が間違っているところを説明してください。
それは 's1Top.equals(s2Top)'で動作しますか? – Marvin
いいえそれは動作しません – user6622569
'original'と' query'のすべての要素をスタックにプッシュしました。スタックの先頭の要素は各文字列の最後の要素です。 'peek()'を使うと、 's'と' g'を比較するので、 'if'を入力せず無限ループに留まります。 –