题目链接

 

输入两个只含有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()