سلام
لطفا منو راهنمایی کنید:
یه رشته داریم مثل:
s1:ABC-ADC-B-FE-DA-B-CDA-E
اگر ورودی:-***-
خروجی:ADC,CDA
سلام
لطفا منو راهنمایی کنید:
یه رشته داریم مثل:
s1:ABC-ADC-B-FE-DA-B-CDA-E
اگر ورودی:-***-
خروجی:ADC,CDA
صورت سوال رو واضح تر بگید فکر بدی نیست
فکر کنم منظورشون جست و جو در داخل رشته بر اساس یک فرمت خاص باشه و ستاره به معنی متغییر بودن حروف این قسمت باشه.
این مسله رو می شه هم با O(nk) هم O(n) حل کرد... اگه n طول رشته اصلی و k اون سوال باشه ... به kmp هم معروفه تو کتابای الگوریتم هم هست. اگر پیدا نکردید بگید همینجا بحثش بشه ...
بله آقا آرمان درست متوجه شدن
مثلا:
s1:ABC-ADC-B-FE-DA-B-CDA-E
اگر ورودی:-***-
خروجی:ADC,CDA
و یا اگه ورودی : -A*C
خروجی:ABC,ADC
ستاره میتونه هر حرفی باشه(حرف اول A حرف دوم هر چی و حرف سوم C و آخرش هم - باشه)
لطفا اگه کسی بلده کمک کنه تا فردا فقط وقت دارم.
یه راه ساده اش اینه که یه for ببندیم روی کل اون تکست ورودی و به ازای هر i چک کنیم با شروع از ون می شه مشابه صورت سوالمون رو بسازیم یا نه.برای اینم کافیه یه فور ه دیگه به طول صورت سوال ببندیم که عمل چک کردن رو فقط برای اون کرکتر هایی که ستاره نیستند انجام می ده... این راه سادشه که O(nk) است...
for(int i=0;i<text.length()-q.length();i++){
for(int j=0;j<=q.length();j++){
if(q[j]!='*' && j!=q.length()){
if(q[j]!=a[i+j])
break;
}
if(j==q.length())
cout<<text.substr(i,q.length());
}
}