1768. 交替合并字符串
给你两个字符串 word1
和 word2
。请你从 word1
开始,通过交替添加字母来合并字符串。如果一个字符串比另一个字符串长,就将多出来的字母追加到合并后字符串的末尾。
返回 合并后的字符串 。
示例 1:
输入:word1 = "abc", word2 = "pqr"
输出:"apbqcr"
解释:字符串合并情况如下所示:
word1: a b c
word2: p q r
合并后: a p b q c r
示例 2:
输入:word1 = "ab", word2 = "pqrs"
输出:"apbqrs"
解释:注意,word2 比 word1 长,"rs" 需要追加到合并后字符串的末尾。
word1: a b
word2: p q r s
合并后: a p b q r s
示例 3:
输入: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 <= 100
word1
和word2
由小写英文字母组成
题解:
class Solution {
public String mergeAlternately(String word1, String word2) {
int minLen = Math.min(word1.length(), word2.length());
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < minLen; i++) {
sb.append(word1.charAt(i)).append(word2.charAt(i));
}
return sb.append(word1.substring(minLen)).append(word2.substring(minLen)).toString();
}
}
笔记:
int minLen = Math.min(word1.length(), word2.length());
求两个字符串较短的那个,以它作为循环的限制;substring(); 截取字符串中介于两个指定下标之间的字符。
用法:
- 两个参数:
字符串.substring(参数1,参数2);
参数1:字符串截取的起始下标,非负的整数
如果此参数是0,则是从字符串的第一个字符开始截取
参数2:截取结束位置的索引下标注意:截取的结果,不包括结束位置的字符
示例:String str="abcdefghijklmn"; String res=str.substring(2,6); System.out.println(res); 结果res为:"cdef"
- 一个参数:
字符串.substring(参数);
参数:字符串截取的起始下标
结果:从起始位置至字符串末尾的字符串
示例:String str="abcdefghijklmn"; String res=str.substring(3); System.out.println(res); 结果res为:"defghijklmn"
charAt(i) 函数 是获取字符串中i+1位置的字符
eg :
String str = "abc"; //从字符串中取字符 char ch = str.charAt(0); //第一个字符 char ch2 = str.charAt(1);// 第二个字符 结果res为: ch:a, ch2:b
Java中append()方法
- Java中的StringBuffer/StringBuilder 类是动态字符串数组。
StringBuilder:JDK5.0提供,运行效率快、线程不安全。(单)
StringBuffer:JDK1.0提供,运行效率慢、线程安全。(多)概念:可在内存中创建可变的缓冲空间,存储频繁改变的字符串。
优点:执行效率高于String。
StringBuffer/StringBuilder 类包含append()方法,append()方法相当于“+”,将指定的字符串追加到此字符序列。
StringBuffer/StringBuilder.append()追加的字符串在同一个内存地址。
eg:
public class Test{ public static void main(String args[]){ StringBuffer sBuffer = new StringBuffer("aaa"); sBuffer.append("bbb"); sBuffer.append("ccc"); sBuffer.append("ddd"); System.out.println(sBuffer); } } 结果res为: aaabbbcccddd