CSDN编程挑战——《交替字符串》
生活随笔
收集整理的這篇文章主要介紹了
CSDN编程挑战——《交替字符串》
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
交替字符串
題目詳情:
假設(shè)字符串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的交替字符串。
輸入格式:
多組數(shù)據(jù),每組數(shù)據(jù)三行,各自是str1,str2,str3。str1,str2的長度在[1..100]范圍內(nèi),str3的范圍在[1..200]范圍內(nèi)。字符串僅僅包括小寫英文字母。
輸出格式:
每組數(shù)據(jù)輸出一行YES或者NO。
答題說明:
輸入例子
a
b
ab
a
b
ca
輸出例子:
YES
NO
欠缺考慮(Error):
改動后(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挑戰(zhàn)編程交流群:??372863405 ? ? ??
轉(zhuǎn)載于:https://www.cnblogs.com/llguanli/p/7257681.html
總結(jié)
以上是生活随笔為你收集整理的CSDN编程挑战——《交替字符串》的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cdlinux miniwdep 配置
- 下一篇: THINKPHP3.2+PHP5.3 配