日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CSDN编程挑战——《交替字符串》

發布時間:2024/4/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSDN编程挑战——《交替字符串》 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

交替字符串

題目詳情:

假設字符串str3可以由str1和str2中的字符按順序交替形成,那么稱str3為str1和str2的交替字符串。比如str1="abc",str2="def"。那么"adbecf", "abcdef", "abdecf", "abcdef", "adefbc"等等都為str1和str2的交替字符串。更形式化的。str3的生成算法例如以下:

str3=""

while str1不為空 or str2不為空:

把str1或str2的首字符增加到str3,并從str1或str2中刪除對應的字符

end

給定str1, str2,和str3。推斷str3是否為str1和str2的交替字符串。


輸入格式:

多組數據,每組數據三行,各自是str1,str2,str3。str1,str2的長度在[1..100]范圍內,str3的范圍在[1..200]范圍內。字符串僅僅包括小寫英文字母。

輸出格式:

每組數據輸出一行YES或者NO。

答題說明:

輸入例子

a

b

ab

a

b

ca

輸出例子:

YES

NO


欠缺考慮(Error):

#include "stdio.h" #include "string.h" #define maxn 100+2char str1[maxn],str2[maxn],str3[maxn*2];int fun() {int i1=0,size1=strlen(str1);int i2=0,size2=strlen(str2);int i3=0,size3=strlen(str3);//通過 str1和str2 順序匹配 str3 ,匹配不到 return 0 while(i3<size3){if(i1<size1 && str3[i3]==str1[i1]){i1++;}else if(i2<size2 && str3[i3]==str2[i2]){i2++;}else {return 0;}i3++;}return 1; }int main() {while(scanf("%s%s%s",str1,str2,str3)){if(strlen(str1)+strlen(str2)==strlen(str3) && fun()){printf("YES\n");}else{printf("NO\n");}}return 0; } /*不通過的測試用例:12345 6278 162782345 錯誤原因:通過 str1和str2 按順序進行匹配 str3 。此程序的錯就錯在匹配這。即 str1和str2 對(str3中)某一個字符同一時候能夠匹配時沒有進行選擇而是簡單的用 str1中的字符去匹配 */
改動后(AC):

#include "stdio.h" #include "string.h" #define maxn 100+2char str1[maxn],str2[maxn],str3[maxn*2];int fun(int i1,int i2,int i3) { if(i1>strlen(str1) || i2>strlen(str2) || i3>strlen(str3)) return 0;if(i1==strlen(str1) && i2==strlen(str2) && i3==strlen(str3)){return 1;}else if(str1[i1]==str2[i2] && str3[i3]==str1[i1]){return (fun(i1+1,i2,i3+1) || fun(i1,i2+1,i3+1));}else if(str3[i3]==str1[i1]){return fun(i1+1,i2,i3+1);}else if(str3[i3]==str2[i2]){return fun(i1,i2+1,i3+1);}else{return 0;} }int main() {while(scanf("%s%s%s",str1,str2,str3)){if(strlen(str1)+strlen(str2)==strlen(str3) && fun(0,0,0)){printf("YES\n");}else{printf("NO\n");}}return 0; }
CSDN挑戰編程交流群:??372863405 ? ? ??

轉載于:https://www.cnblogs.com/llguanli/p/7257681.html

總結

以上是生活随笔為你收集整理的CSDN编程挑战——《交替字符串》的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。