持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第26天,点击查看活动详情
快乐周六,全程起飞~~
交替合并字符串
该题出自力扣的1768题 —— 交替合并字符串【简单题】
审题
给你两个字符串 word1 和 word2 。请你从 word1 开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。 返回 合并后的字符串 。
- 这道题因为是简单题,所以就额外地简单
- 给出两个字符串,最终返回一个拼接的字符串,那么拼接的业务规则就是交替拼接,例如"abc"和"qwe"最终就需要返回"aqbwce"
- 简单题型简单实现,直接定义一个StringBuilder作为拼接字符串,定义两个字符串的最长长度变量
- 遍历,两个字符串交替拼接,并且加上条件,如果超出长度范围的则把剩余的字符串拼接进去
- 除了这种解法意外,其实还可以,利用Math的方法的Max和min,获取出最大长度和最小长度,然后再遍历最小长度以后,对剩余的最大长度直接补充。同样的复杂度,能降低系数也是降低。既然要追求刺激,那就贯彻到底嘛
- 由于word1和word2的长度有可能是不同的,所以在遍历的判断上,我们采用 i < w1 || i < w2 (其中: w1是word1的长度,w2是word2的长度)。而在拼装上,只有当
i < w1
的时候才拼装word1的字符;只有当i < w2
的时候才拼装word2的字符;先交替填充,然后再多余的字符填充到最后
编码
class Solution {
public String mergeAlternately(String word1, String word2) {
int n1 = word1.length(),n2 = word2.length();
int n = Math.max(n1,n2);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
if (i < n1){
sb.append(word1.charAt(i));
}
if (i < n2){
sb.append(word2.charAt(i));
}
}
return sb.toString();
}
}