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” 我的输出:“”
您的代码:
StringBuilder ans = new StringBuilder(length);
为字符串 bulder 定义一个 initial capacity,但不填充任何文本。请参阅 Javadoc:
构造一个没有字符的字符串生成器,初始容量由容量参数指定。
换句话说,
new StringBuilder( 42 ).length()
返回 0
零。
所以你的测试
while(current < ans.length())
永远不会返回true
。您的 current
变量永远不会小于零,永远不会为负。
char
是遗产char
类型从 Java 2 开始就被打破了,从 Java 5 开始就被遗弃了。作为一个 16 位值,char
不能代表大多数字符。
要使用单个字符,请学习使用 code point 整数。
搜索 Stack Overflow 以了解更多信息,因为这已经被多次介绍了。