现在的位置: 首页 > 综合 > 正文

交替字符串

2018年05月04日 ⁄ 综合 ⁄ 共 1211字 ⁄ 字号 评论关闭


                                                                           交替字符串

题目详情

如果字符串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<iostream>
#include<string.h>
using namespace std;


bool IsAlternatelyString(string str1, string str2, string str3)
	{
	int i=0,j=0,k=0;
	while(i<str1.length()&&j<str2.length()&&k<str3.length())
	{
	    if(str1[i]==str3[k])
	    {
                i++;
	        k++;
	    }else
	     {			
		if (str2[j] == str3[k])
               {
                  j++;
                  k++;
                }else{
                   return false;
               }

	    }
       }
	while (k<str3.length()&&i<str1.length())
       {
           if (str1[i] == str3[k])
           {
                i++;
                k++;
           }
           else
           {
                return false;
           }
        }
    	 while (k<str3.length()&&j<str2.length())
      	{
           if (str2[j] == str3[k])
           {
                j++;
                k++;
           }
           else
           {
                return false;
           }
       }
     return true;
}
int main(){

	string str1[100]={"abc","a","a"};
	string str2[100]={"def","b","b"};
	string str3[]={"adbecf","ab","ac"};
	int i=sizeof(str3)/sizeof(str3[0]);
	for(int j=0;j<i;j++)
	{
		if(IsAlternatelyString(str1[j],str2[j],str3[j]))
		{
			cout<<"YES"<<endl;
		}else{
			cout<<"NO"<<endl;
		}
	}
	system("pause");
}

【上篇】
【下篇】

抱歉!评论已关闭.