Leetcode第1768题

题目描述

https://leetcode.cn/problems/merge-strings-alternately/

个人思路

对于两个字符串进行交替合并,就是创建一个新的空字符串,然后把两个字符串的字符依次加入新的字符串中,最后剩余的字符直接添加到新字符串中。

public  String mergeAlternately(String word1, String word2) {
     int i=word1.length();
     int j=word2.length();
     StringBuilder temp=new StringBuilder("");

     while (i !=0 && j!= 0){
         temp.append(word1.charAt(word1.length()-i--));
         temp.append(word2.charAt(word2.length()-j--));
     }
     if(i>0){
         temp.append(word1.substring(word1.length()-i));
     }else{
         temp.append(word2.substring(word2.length()-j));
     }
     return  temp.toString();
 }

代码优化

  1. 原始代码是空字符串是用StringBuffer进行保存,但是由于其特性,每次操作都要加锁和解锁,其所耗时间大,所以单线程的情况下尽量使用StringBuilder,两个的操作几乎一致。
  2. 添加最后的剩余字符,之前使用的是for循环遍历到字符结束,但可以直接使用substring或者从当前位置开始到结束的所有字符。

参考思路

收获

学到了两个代码优化技巧