プレフィックス判定
タイトル:プレフィックスの判断
次のコードは、needle_startが指す文字列がhaystack_startが指す文字列のプレフィックスであるかどうかを判断し、そうでない場合はNULLを返します。
例:「abcd1234」にはプレフィックスとして「abc」が含まれていますchar * prefix(char * haystack_start、char * needle_start)
{ char * haystack = haystack_start; char * needle = needle_start; while(* haystack && * needle){ if(______________________________)return NULL; //空白の位置を埋める } if (* needle)return NULL; return haystack_start; }コードロジックを分析し、下線でコードを推測して、Webページから送信してください。注:不足しているコードのみを回答として使用し、冗長なコード、記号、説明テキストは入力しないでください
回答案:*(haystack ++)!= *(needle ++)
問題分析
埋める場所を見つけたら、ポインタを動かして、ポインタが指す文字が等しいかどうかを確認する必要があります。
穴埋めの問題に直面して、最初にコードをコンパイラーに入れて、それをコンパイルしてみてください。記入するコードについて一定の判断を下し、問題の解決方法に関するコードを記入してください。
#include <iostream>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
char* prefix(char* haystack_start, char* needle_start)
{
char* haystack = haystack_start; //原串
char* needle = needle_start; //前缀
while(*haystack && *needle){ //两个指针都没有越界
// if(______________________________) return NULL; //填空位置
//移动指针,判断是否相等
if(*(haystack++)!= *(needle++))
return NULL;
}
if(*needle)
return NULL;
return haystack_start;
}
int main(int argc, char** argv) {
cout << prefix("abc123", "abd");
return 0;
}