生活随笔
收集整理的這篇文章主要介紹了
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。
#include<stdio.h>
/******************************************************************************/
// DESCRIPTION:
// Global resource dependence :
// AUTHOR: Owen.wei
// Note : 交替字符串
/******************************************************************************/
#define bool int
#define false 0
#define true 1
int main()
{bool Flag_1=false;bool Flag_2=false;unsigned int i=0;unsigned int j=0;char str_1[100];char str_2[100];char str_3[200];gets(str_1);gets(str_2);gets(str_3);if(strlen(str_3)!=(strlen(str_1)+strlen(str_2)))//step 1{printf("NO\n");return 0;}//printf("%d\n",strlen(str_2));for(i=0;i<strlen(str_3);i++){//printf("%dof%d\n",i,strlen(str_3));Flag_1=false;//重新初始化這個bool變量Flag_2=false;//重新初始化這個bool變量for(j=0;j<strlen(str_1);j++){if(str_3[i]==str_1[j]){//printf("str_3[%d]=%c\n",i,str_3[i]);//printf("str_1[%d]=%c\n",i,str_1[i]);if(i==(strlen(str_3)-1))//已經到了最后一個字符{printf("YES\n");break;}Flag_1=true;break;//繼續執行下一次for循環}}if(Flag_1==true){continue;//如果上面找到的話,就不到再找下面的了,直接重新開始找}for(j=0;j<strlen(str_2);j++){if(str_3[i]==str_2[j]){//printf("str_3[%d]=%c\n",i,str_3[i]);//printf("str_1[%d]=%c\n",i,str_1[i]);if(i==(strlen(str_3)-1))//已經到了最后一個字符{printf("YES\n");break;}//continue;//繼續執行下一次for循環Flag_2=true;break;//繼續執行下一次for循環}if(j==(strlen(str_2)-1)){printf("NO\n");break;}}if(Flag_2==true){continue;//如果上面找到的話,就不到再找下面的了,直接重新開始找}}return 0;
}
總結
以上是生活随笔為你收集整理的CSDN编程挑战(交换字符)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。