开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第10天,点击查看活动详情
题目 leetcode.cn/
- 给你两个字符串
word1和word2。请你从word1开始,通过交替添加字母来合并字符串。 - 如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
- 返回 合并后的字符串 。
示例
-
输入: word1 = "abc", word2 = "pqr",输出:"apbqcr"解释: 字符串合并情况如下所示:- word1: a b c
- word2: p q r
- 合并后: a p b q c r
-
输入: word1 = "ab", word2 = "pqrs",输出:"apbqrs"解释: 注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。- word1: a b
- word2: p q r s
- 合并后: a p b q r s
-
输入: word1 = "abcd", word2 = "pq",输出:"apbqcd"解释: 注意,word1 比 word2 长,"cd" 需要追加到合并后字符串的末尾。- word1: a b c d
- word2: p q
- 合并后: a p b q c d
提示
1 <= word1.length, word2.length <= 100word1和word2由小写英文字母组成
代码
function mergeAlternately(word1: string, word2: string): string {
let str = '';
for(let i = 0; i < word1.length; i++){
str += word1[i];
for(let j = i; j < word2.length; j++){
if(j < word1.length - 1){
str += word2[j];
break;
}else{
str += word2[j];
}
}
}
return str;
};
思路
-
交替合并字符串,穿插的从给定的两个字符串中取一个字符,然后拼接起来,如果有一个字符串取完了,那么剩余那个没取完的字符串后面就不用交替合并了,直接拼接上去就可以
-
给定的字符串一共有三种情况
- 第一种:
word1.length > word2.length,这种情况优先取word2字符串的字符,循环的范围也是由word2的长度来确定的,也就是短板效应,word1的前word2.length个字符需要穿插拼接,后面就可以直接拼接 - 第二种:
word1.length < word2.length,同上,循环范围由word1的长度确定,word2的前word1.length个字符需要穿插拼接,后面就可以直接拼接 - 最后一种:
word1.length === word2.length,所有字符都需要穿插拼接
- 第一种:
-
不过上面不是这样做的,先定义一个字符串变量。遍历给定的两个字符串,外层遍历的时候拼接上
word1取出来的字符,内层遍历时拼接上word2取出来的字符。word1取第i个字符时,word2也应该取第i个- 当
word2取完第i个时,退出当前循环,不需要接着取下一个 - 当
word1取到最后一个时,如果word2后面还有,就接着把word2后面的一次性取完,不需要break