黑马程序员技术交流社区

标题: 深夜求助,求字符串的拼接,请看题 [打印本页]

作者: 13716326405    时间: 2017-5-2 01:26
标题: 深夜求助,求字符串的拼接,请看题
求思路和分析

给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
例如:"abc"和"xyz"返回的是:"axbycz"."
"xxxx","There")
"xTxhxexre"

作者: IceLoveInFire丶    时间: 2017-5-2 03:04
有什么难的,循环嵌套遍历两个字符串就可以了啊

作者: 掬一束月光    时间: 2017-5-2 06:43
你都把题讲出来了,思路已经很明确了
给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
这本身就是思路和分析
作者: 齐齐木    时间: 2017-5-2 06:49
c=a+b;

作者: 阿阿阿阿兵    时间: 2017-5-2 08:03
StringBuilder类中apend方法啊

作者: 13716326405    时间: 2017-5-2 09:04
掬一束月光 发表于 2017-5-2 06:43
你都把题讲出来了,思路已经很明确了
给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的 ...

啊,,,,但这种思路对我来讲好像没什么用啊
作者: 13716326405    时间: 2017-5-2 09:07
齐齐木 发表于 2017-5-2 06:49
c=a+b;

请不要逗我玩,说出禅语我需要足够的智商
作者: 不忘初心.    时间: 2017-5-2 09:40
IceLoveInFire丶 发表于 2017-5-2 03:04
有什么难的,循环嵌套遍历两个字符串就可以了啊

循环遍历那不是axyzbxyzcxyz,不符合要求

作者: 星尘起航    时间: 2017-5-2 09:57
//定义一个大串用来接收新的字符串,可以用SB来做
String c=“”;
//先比较两字符串的长度
if(a.length()≥b.length()){
//把大串放b里面方便操作
String temp =a;
a=b;
b=temp;
}
//遍历大串
for (int i=0;i<b.length();i++){
//
       if(i<a.length()){
            c += a.charAt(i)+b.charAt(i);
       }else{
             c+=b.chatAt(i);
        }
}


作者: hongyu2017    时间: 2017-5-2 11:22
字符数组自定方法或集合算法

作者: 13716326405    时间: 2017-5-2 16:18
星尘起航 发表于 2017-5-2 09:57
//定义一个大串用来接收新的字符串,可以用SB来做
String c=“”;
//先比较两字符串的长度

谢谢帮助,我看看
作者: 13716326405    时间: 2017-5-2 16:19
hongyu2017 发表于 2017-5-2 11:22
字符数组自定方法或集合算法

谢谢帮助
作者: Hp_Yx    时间: 2017-5-2 17:35
同时遍历俩个字符串,然后相加即可

作者: 654788808    时间: 2017-5-2 22:14
本帖最后由 654788808 于 2017-5-2 23:17 编辑

public class Demo {
        public static void main(String[] args) {
                String a = "abcdef";
                String b = "123";  //调用静态方法,并打印返回结果              
                System.out.println(sumAB(a,b));
        }
//定义静态方法,需要参数为两个字符串,返回结构为字符串形式
        public static String sumAB(String a , String b){
//定义空串,接收每次循环的结果
                String ab = "";
//循环遍历长度较短的字符串,其中任意一个为空串,此循环会被跳过
                for(int i = 0; i<a.length()&&i<b.length();i++){
                        ab = ab+a.charAt(i)+b.charAt(i);
                }
                int len = ab.length()/2;
//累加上剩下的字符串               
                return ab+a.substring(len)+b.substring(len);
        }
}


作者: 迪卡bas    时间: 2017-5-2 22:58
654788808 发表于 2017-5-2 22:14
package dome;

public class dome {

老鸽稳稳地
作者: 13716326405    时间: 2017-5-3 01:44
654788808 发表于 2017-5-2 22:14
public class Demo {
        public static void main(String[] args) {
                String a = "abc ...

谢谢帮助,我认真学习一下
作者: newu    时间: 2017-5-3 08:52
楼主威武,强烈支持……

作者: unscdf117    时间: 2017-5-3 10:49
天呐 你很66 这个貌似不是你要担心的问题 哥们不要走偏

作者: 13716326405    时间: 2017-5-3 23:05
unscdf117 发表于 2017-5-3 10:49
天呐 你很66 这个貌似不是你要担心的问题 哥们不要走偏

?什么意思
作者: 晴天Neal    时间: 2017-5-4 19:15
package com.itheima;
/*给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
例如:"abc"和"xyz"返回的是:"axbycz"."*/

public class Test1 {
        public static void main(String[] args) {
                String s1 = "abc";
                String s2 = "xyzttt";
                StringBuilder sb1 = new StringBuilder();
               
                for (int i = 0; i<s1.length();i++){
                        sb1.append(s1.charAt(i));
                        sb1.append(s2.charAt(i));
                }
                if(s2.length()-s1.length()>0){
                        for(int i = s1.length();i<s2.length();i++){
                                sb1.append(s2.charAt(i));
                        }
                }
               
                System.out.println(sb1);
        }
}
作者: 13716326405    时间: 2017-5-4 21:22
晴天Neal 发表于 2017-5-4 19:15
package com.itheima;
/*给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符 ...

假设,只给了s1和s2两个参数,并没有给他们赋值,然后自己做一个方法出来.
for (int i = 0; i<s1.length();i++){
                         sb1.append(s1.charAt(i));
                         sb1.append(s2.charAt(i));
请问这个代码,是在实现他们交叉拼接的,是吧?

作者: yourtear    时间: 2017-5-6 14:40
/*给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
                a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
                例如:"abc"和"xyz"返回的是:"axbycz"."
*/
                //创建键盘录入对象
                Scanner sc = new Scanner(System.in);
               
                //接收数据
                System.out.println("请输入第一个字符串");
                String s1 = sc.nextLine();
                System.out.println("请输入第二个字符串");
                String s2 = sc.nextLine();
               
                //定义字符串缓冲流
                StringBuilder sb = new StringBuilder();
               
               
               
                //定义变量初始化值
                int x = 0;
                                        //例如 字符长度  3        字符长度  4    满足其中条件  不满足结束
                while (x<s1.length() || x<s2.length()) { //例如输入的字符串: a  b c    x y z n
                       
                            // x< 3
                        if (x<s1.length()) {
                                sb.append(s1.charAt(x));   //满足条件 添加 a b c 不满足结束
                        }                // x<4                                                //a + x + b + y + c + z + n
                        if (x<s2.length()) {                         
                                sb.append(s2.charAt(x)); //满足条件  添加 x y z n 不满足结束
                        }
                        x++;
                }
                //打印输出
                System.out.println(sb);
               
                       
               
               
               
       
               
               
               
               
       
               
               
               
        }

}

还在基础班小菜鸡写的,应该容易理解点.
作者: 晴天Neal    时间: 2017-5-7 10:47
13716326405 发表于 2017-5-4 21:22
假设,只给了s1和s2两个参数,并没有给他们赋值,然后自己做一个方法出来.
for (int i = 0; i ...

对的,StringBuilder的拼接,可以对任何类型的数值拼接,int,char,String都可以,而且节省内存
作者: 13716326405    时间: 2017-5-7 16:27
yourtear 发表于 2017-5-6 14:40
/*给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
                a的第二个字符,b ...

这种思路,我还真理解了半天才想明白.不过确实是个好方法.谢谢你.
作者: 13716326405    时间: 2017-5-7 16:27
晴天Neal 发表于 2017-5-7 10:47
对的,StringBuilder的拼接,可以对任何类型的数值拼接,int,char,String都可以,而且节省内存 ...

嗯,理解了.谢谢你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2