输入两个只含有01的字符串,s,t
求一个字符串p使到s,t的距离一样
这里的距离是指对应位置:0-0的距离是0 ,o-1的距离是1 ,1-1的距离是0,1-0的距离是1
这里只要求找出满足条件的一个p既可以
对s,t相同位置一样的可以不考虑,因为这个是同时增加了p到两者的距离
下面就是只对相同位置不相同的情况考虑
交替的选取si,ti的位置的元素组成新的p
如果不相同的元素个数是偶数则这里的p满足条件,否则,不对头。
下面的java代码,p我定义成String类型,每次把要链接的si或ti链接起来,提交后 第三次测试数据运行时间超时,,,,,,,改成StringBuilder,就可以了。。。。。
Java代码:
import java.util.Scanner; public class B545 { static void run(){ Scanner sc = new Scanner(System.in); char[] s= sc.next().toCharArray(); char[] t = sc.next().toCharArray(); StringBuilder p = new StringBuilder(); int count = 0; boolean flag = false; for(int i=0;i<s.length;i++){ char si=s[i]; char ti=t[i]; if(si == ti) p.append(si); else if(flag==false) { p.append(si); count++; flag = true; } else if(flag = true){ p.append(ti); count++; flag = false; } } if (count%2==0) System.out.println(p.toString()); else System.out.println("impossible"); } public static void main(String[] args){ run(); } }
Python程序
def B545(): s,t = raw_input().strip(),raw_input().strip() count = 0 p='' flag = False for i in range(len(s)): if s[i]==t[i]: p+=s[i] elif flag==False: p+=s[i] count+=1 flag =True elif flag == True: p+=t[i] count+=1 flag =False #print p if count%2==0: print p else: print 'impossible' if __name__=='__main__': B545()