交替字符串
交替字符串
題目詳情:
如果字符串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
AC代碼:
#include<stdio.h> #include<string.h>int fun(char *str1,char *str2,char *str3) {int i=0,j=0,k=0;int len1=strlen(str1),len2=strlen(str2),len3=strlen(str3);while(str1[i]!='\0'||str2[j]!='\0'){if(str1[i]==str3[k]){i++;k++;}else{if(str2[j]==str3[k]){j++;k++;}elsereturn 0;}}while(k<len3&&i<len1){if(str1[i]==str3[k]){i++;k++;}elsereturn 0;}while(k<len3&&j<len2){if(str2[j]==str3[k]){j++;k++;}elsereturn 0;}return 1; } int main() {char str1[103],str2[103],str3[206];while(~scanf("%s%s%s",str1,str2,str3)){if(fun(str1,str2,str3)){printf("YES\n");}elseprintf("NO\n");}return 0; }
總結
- 上一篇: 一问带你区分清楚Authenticati
- 下一篇: 撸了个 DDD 项目,爽!