LeedCode刷题(1)-交替合并字符串

发布时间 2023-10-27 18:12:49作者: silly_fox

1.交替合并字符串

题目:给你两个字符串word1和word2。请你从word1开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并字符串的末尾。

示例 1:

输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1:  a   b   c
word2:    p   q   r
合并后:  a p b q c r

示例 2:

输入:word1 = "ab", word2 = "pqrs"
输出:"apbqrs"
解释:注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。
word1:  a   b 
word2:    p   q   r   s
合并后:  a p b q   r   s

个人解答:

class Solution {
   public String mergeAlternately(String word1, String word2) { 
       StringBuilder res = new StringBuilder();  //定义可变字符串对象res,内容初始为空
       int len = Math.min( word1.length(),word2.length());   //两个字符串的最小长度
       for(int i=0;i<len;i++){  //在字符串最小长度内进行交替拼接
          res.append(word1.charAt(i)).append(word2.charAt(i)); //先拼接第一个字符串的值,在拼接第二个字符串的值
       };
        res.append(word1.substring(len)).append(word2.substring(len)); //从最小长度之后开始拼接
       return res.toString();   //返回字符串拼接的值
   }
}

①用到的方法总结

//1.StringBuilder类:创建可变字符串,StringBuilder创建的对象内容可以进行修改
StringBuilder res = new StringBuilder();  //定义可变字符串对象res,内容初始为空
StringBuilder sb = new StringBuilder("hello");   //创建对象,内容为hello

//2.Math.min():math类的min方法,找出参数中的最小值
Math.min( word1.length(),word2.length());   //两个字符串的最小长度

//3.length()方法:字符串string中的方法,返回字符串长度
word1.length();
word2.length();

//4.append()方法:String类的方法,将值添加到字符串末尾
res.append(word1.charAt(i));

//5.public char charAt(int index):获取某个索引位置的字符返回
word1.charAt(i);

//6.public String substring(int beginIndex):从传入的索引截取到末尾
word1.substring(len);

//7.toString()  由于StringBuilder创建的是对象,因此末尾用toString()将对象转换成一个真正的字符串
String newStr = sb.toString();
res.toString();

②思路

  • 创建一个空字符串,用来保存拼接的字符串
  • 创建一个int变量len,用来保存两个字符串的最小长度
  • 在最小长度内,使用append()方法轮流添加一个字符
  • 在最小长度外,使用substring()方法将超过最小长度的字符串直接截取拼接到末尾
  • 将拼接好的字符串返回给函数

③IDEA编译器测试

public class Test {

    public static void main(String[] args) {   //调用测试

        String result =  AppendString("abc","pqr");
        System.out.println(result);

        result = AppendString("ab","pqrs");
        System.out.println(result);

        result = AppendString("abcd","pq");
        System.out.println(result);
        
        /*输出结果:
            apbqcr
            apbqrs
            apbqcd        	
        */

    }

    public  static String AppendString(String word1,String word2){
        StringBuilder res = new StringBuilder();   //创建一个空字符串对象
        int len = Math.min(word1.length(),word2.length());   //保存两个字符串长度中的最小值

        //在最小长度内进行轮流拼接
        for (int i = 0;i < len;i++){
            res.append(word1.charAt(i)).append(word2.charAt(i));   //轮流拼接
        }

        //超过的长度进行直接拼接
        res.append(word1.substring(len)).append(word2.substring(len));


        return res.toString();  //返回字符串
    }

}