java:interleaving string arrays?

时间:2015-12-05 03:49:39

标签: java

所以我很丢失。这就是我的任务。我必须写一个名为的Java方法,它接受两个字符串(称为你和 我)作为论点。该方法将返回一个由你的第一个字符组成的字符串,然后是 我的第一个角色,然后是你的下一个角色,然后是我的下一个角色,依此类推。例如:interleave(" abcdefg"," 1234")返回a1b2c3d4efg

2 个答案:

答案 0 :(得分:0)

试试这个:

public static String combine(String you, String me) {
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < me.length(); i++) {
            if (i < you.length()) {
                builder.append(you.charAt(i));
                builder.append(me.charAt(i));
            } else {
                builder.append(me.charAt(i));
            }
        }
        return builder.toString();
    }

我们遍历第二个参数(必须是较长的一个才能正常工作),然后将每个字符附加到字符串中。这样做的时间很长,因为我们还没有达到第一个参数的末尾(较小的一个)。之后,它只是附加剩余的较长的字符串。

所以如果我们做 System.out.println(combine("123456789", "abcdefghi");  结果将是 1a2b3c4d5e6f7g8h9i

答案 1 :(得分:0)

public void modify(String a1, String b1){

    int index = 0;

    int len1 = a1.length() > b1.length()? a1.length():b1.length();
    int len2 = a1.length() > b1.length()? b1.length():a1.length();

    for(int i=0;i<len1;i++){

        if(len2>0){
            System.out.print(""+a1.charAt(index)+b1.charAt(index));
            index++;
            len2--;
        }
        else{

            if(i<a1.length())
            {
                System.out.print(""+a1.charAt(index));
                index++;
            }
            else
            {
                System.out.print(""+b1.charAt(index));
                index++;
            }                       

        }           
    }   

这个modify()接受两个字符串,无论哪个字符串更大,都存储在len1中,而较小的字符串存储在len2中。

&#39;指数&#39;用于提取字符串的特定索引。

&#39;对于&#39;循环遍历较大的字符串并交替打印两个字符串。 然后,无论哪个字符串更大,都会附加其余的内容。

例如:modify(&#34; abcdefg&#34;,&#34; 1234&#34;)打印a1b2c3d4efg。