Part 1 - Array / String

Day 1:1768. Merge Strings Alternately Easy


🔸 題目連結: https://leetcode.com/problems/merge-strings-alternately/description/?envType=study-plan-v2&envId=leetcode-75

💭 分析與思路: 設立一個 index i ,跑 while 迴圈直到 word1 或者 word2 到盡頭。接著再把剩餘的字串拼接上去。

🔹 Javascript:

var mergeAlternately = function (word1, word2) {
  let i = 0;
  let result = "";

  while (word1[i] && word2[i]) {
    result += word1[i] + word2[i];
    i++;
  }
  result += word1.slice(i) + word2.slice(i);
  return result;
};

☕ Java:

class Solution {
    public String mergeAlternately(String word1, String word2) {
        
        StringBuilder result = new StringBuilder();
        int i = 0;
        int l1 = word1.length();
        int l2 = word2.length();

        while (i < l1 && i < l2) {
            result.append(word1.charAt(i)).append(word2.charAt(i));
            i++;
        }

        if (i < l1) {
            result.append(word1.substring(i));
        } else if (i < l2) {
            result.append(word2.substring(i));
        }

        return result.toString();
    }
}

Day 2:1071. Greatest Common Divisor of Strings Easy


🔸 題目連結: https://leetcode.com/problems/greatest-common-divisor-of-strings/description/?envType=study-plan-v2&envId=leetcode-75

💭 分析與思路: 這題可以運用輾轉相除法的概念,不過要稍微轉換一下思維!

首先需先解釋這行 if (str1 + str2 !== str2 + str1) return ""; : 其意思為如果兩段string有common devisor,那兩段string調換順序再相組,並定會相同!

再來就簡單了,取兩段 string 的 length 得 gcd,在取得subString即可。