首页 > 试题广场 >

合并符串

[编程题]合并符串
  • 热度指数:6610 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定两个字符串S1和S2,合并成一个新的字符串S。 合并规则为,S1的第一个字符为S的第一个字符,将S2的最后一个字符作为S的第二个字符; 将S1的第二个字符作为S的第三个字符,将S2的倒数第二个字符作为S的第四个字符,以此类推。

输入描述:
包含多组测试数据,每组测试数据包含两行,代表长度相等的两个字符串S1和S2(仅由小写字母组成,长度不超过100)。


输出描述:
合并后的新字符串S
示例1

输入

abc
def

输出

afbecd
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        char[] s1 = br.readLine().toCharArray();
        char[] s2 = br.readLine().toCharArray();
        int len = s1.length + s2.length;
        char[] chars = new char[len];
        int flag = 0;
        int k1=0,k2=s2.length-1;
        for (int i = 0; i < len; i++) {
            if (flag == 0) {
                chars[i] = s1[k1++];
                flag = 1;
            } else {
                chars[i] = s2[k2--];
                flag = 0;
            }
        }
        for (int i = 0; i < len; i++) {
            System.out.print(chars[i]);
        }
    }
}


发表于 2021-02-24 21:22:47 回复(0)
Java 解法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        char[] a = scanner.next().toCharArray();
        char[] b = scanner.next().toCharArray();
        StringBuilder builder = new StringBuilder();
        int i= 0;
        int j= b.length-1;
        while (i<a.length||j>=0) builder.append(a[i++]).append(b[j--]);
        System.out.println(builder.toString());
    }
}


发表于 2020-03-14 16:23:14 回复(0)
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        String a=sc.nextLine();
        String b=sc.nextLine();
        int x=0;
        int y=b.length()-1;
        for (int i = 0; i <2*a.length()-1; i++) {
            if(i%2==0){
                System.out.print(a.charAt(x));
                x++;
            }else{
                System.out.print(b.charAt(y));
                y--;
            }
        }
    }
}

发表于 2019-11-01 12:02:12 回复(0)
import java.util.*;
import java.lang.*;
public class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            
            String s1 = sc.nextLine();
            String s2 = sc.nextLine();
            StringBuffer sb = new StringBuffer();
            for(int i = 0;i<s1.length();i++){
               sb.append(s1.charAt(i));
               sb.append(s2.charAt(s2.length()-i-1));
                
            }
           
            System.out.println(sb);
        }
    }
}

发表于 2019-02-23 18:17:53 回复(0)
import java.util.Scanner;
//曾经知乎上的一个热门话题,等自己变优秀了再去追女神来得及吗?
//真的来不及!
public class Main{
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        String a = scanner.nextLine();
        char[] aChar = a.toCharArray();
        String b = scanner.nextLine();
        char[] bChar = b.toCharArray();
        int len = a.length();
        //char[] str = new char[len+len];
        //int ap = 0;
        //int bp = 2*len-1;
        for(int i = 0,j = len-1;i<len;i++,j--){
            System.out.print(aChar[i]);
            //ap+=2;
            System.out.print(bChar[j]);
            //bp-=2;
        }
        //System.out.print(str.toString());
    }
}

发表于 2018-12-30 13:50:12 回复(0)

可以说是很简单了,但是千万不要想得太复杂,一开始就想着用双层循环。。ummm,一个就可以了。

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while(in.hasNext()) {
            String s1 = in.next().trim();
            String s2 = in.next().trim();
            for(int i = 0; i < s1.length(); i++) {
                int index = s1.length() - i - 1;
                System.out.print(s1.charAt(i) + "" + s2.charAt(index));
            }
        }
    }

}
发表于 2018-04-06 11:25:19 回复(0)