文字列を指定すると、適切な最長の接頭辞の長さが適切な接尾辞にもなります。 例: S = abab長さは接頭辞= 'ab'として2になり、接尾辞 'ab'は共通です。最長接頭辞
ここで私のコードはスタックを使用しています。それはいくつかのケースではなく、いくつかのケースで動作しています。私は、なぜそれがいくつかのケースのために働いていない理由を理解するのに苦労している。誰も私が間違っていることを説明することはできますか?これは、テストケース 「khwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpkhnkhwkhpkhtkhwkhpkhnkhdkhwkhpkhnkhwkhpkhtkhokhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpokhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpkhnkhwkhpkhtkhwkhpkhnkhdkhwkhpkhnkhwkhpkhtkhokhvkhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkgkhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpkhnkhwkhpkhtkhwkhpkhnkhdkhwkhpkhnkhwkhpkhtkhokhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpokhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpkhnkhwkhpkhtkhwkhpkhnkhdkhwkhpkhnkhwkhpkhtkhokhvkhwkhpkhnkhwkhpkhtkhwrkhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkhwkhpkhnckhwkhpkhnkhwkhpkhtkhwkhpkhnkhdkhwkhpkhnkhwkhpkhtkhokhwkhpkhnkhwkhpkhtkhwkhpkhnkhwkhfkhwkhrkのために失敗している
int main(){
long int T,i,j;
/* total test case */
cin>>T>>ws;
while(T--){
string str;
long int count = 0;
getline(cin,str);
stack<char> charStack;
/** push all character till second last **/
for(i=0;i!=str.length()-1;i++){
charStack.push(str[i]);
}
j = str.length()-1;
while(!charStack.empty()){
char ch = charStack.top();
charStack.pop();
if(ch==str[j]){
count++;
j--;
}else {
count = 0;
j = str.length()-1;
}
} //inner while
cout<<count<<"\n";
} //outer while
return 0;
}
hwkhpkhnckhwkhp "
私は55を取得している間、正しい出力は155です。
であるあなたはから文字にスタック(文字列の末尾)の上から文字を比較しています文字列の終わり(すなわち、それ自身)、これは変です。どのような場合には正確に失敗するのですか? – Ap31
スタックの最後の項目には、最後の文字ではなく文字列の2番目の最後の文字が含まれます。 – randy