class Solution {
public String mergeAlternately(String word1, String word2) {
int length = word1.length() + word2.length();
StringBuilder ans = new StringBuilder(length);
int left = 0, right = 0, current = 0;
System.out.println(ans.length());
while(current < ans.length()) {
System.out.println("called");
if(left >= word1.length()) {
ans.append(word2.charAt(right));
right++;
}
else if(right >= word2.length()) {
ans.append(word2.charAt(left));
left++;
}
else if(current % 2 == 0) {
ans.append(word1.charAt(left));
left++;
}
else {
ans.append(word2.charAt(right));
right++;
}
current++;
}
return ans.toString();
}
}
问题是=〉给定两个字符串word1
和word2
。通过从word1开始交替添加字母来合并字符串。如果一个字符串比另一个字符串长,则将额外的字母附加到合并字符串的末尾。
我试过:
输入:word1 = "abc", word2 = "pqr"
预期输出:"apbqcr"
my输出:""
1条答案
按热度按时间ltskdhd11#
初始容量与长度
密码:
为字符串bulder定义一个 initial capacity,但不使用任何文本填充它。请参阅Javadoc:
构造一个字符串生成器,其中不包含任何字符,初始容量由capacity参数指定。
换句话说,
new StringBuilder( 42 ).length()
返回0
零。所以你的测试
while(current < ans.length())
永远不会返回true
。你的current
变量永远不会小于零,永远不会为负。char
是遗留的从Java 2开始,
char
类型基本上就被破坏了,从Java 5开始,char
作为一个16位的值,不能表示大多数字符。要使用单个字符,请学习使用code point整数。
搜索堆栈溢出以了解更多信息,因为这已经被多次覆盖。