算法编程(三十):交替合并字符串

143 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

写在前面

今天的这道题,《交替合并字符串》,是针对两个字符串组合的一道题目。

在之前我们做过拆分,也做过拆分并组合,下面就一起来看看怎么直接组合两个字符串吧。

image.png

题目解读

根据本题的描述来看,是有两个字符串,最后的结果是想要将两个字符串合并在一起,合并规则是隔位插入字符。

多出来的字符紧跟在字符串最后即可。

了解清楚题目,下面我们来说一下解题思路。

我们可以直接使用StringBuilder中的insert方法来直接插入,在这个过程中我们就只需要提供插入的字符,和插入的位置即可。

当然了,还是通过循环才可以,每次循环都越过一位来插入,保证是在奇数位下标索引下插入字符。

下面就来看一下代码的编写吧。

代码实现

本次代码如下所示,大家可以自行参考一下。

public class Solution {

    public static void main(String[] args) {
        Solution solution = new Solution();
        System.out.println(solution.mergeAlternately("abc", "pqr"));
        System.out.println(solution.mergeAlternately("abcd", "pq"));
    }

    public String mergeAlternately(String word1, String word2) {
        StringBuilder stringBuilder = new StringBuilder(word1);
        int index = -1;
        for (int i = 1; i < stringBuilder.length(); i = i + 2) {
            if(++index < word2.length()){
                stringBuilder.insert(i, word2.charAt(index));
            }
        }
        if(index < word2.length() - 1){
            stringBuilder.append(word2.substring(index + 1));
        }
        return stringBuilder.toString();
    }

}

代码执行结果

本次的代码执行结果很一般,但总算是解决了,这道题要是自己来拼接的话,还能提升一下效率。

image.png

其他思路

其他思路就是拼接字符的地方不使用Java提供的方法来插入,自行实现拼接应该会更好一些。

总结

本道题主要考察对多个字符串拼接的掌握程度,只要熟悉如何定位字符串中的每一个字符位置就可以解出这道题了。