java StringBuilder在代码中有什么问题

2vuwiymt  于 2023-04-19  发布在  Java
关注(0)|答案(1)|浏览(126)
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();
    }
}

问题是=〉给定两个字符串word1word2。通过从word1开始交替添加字母来合并字符串。如果一个字符串比另一个字符串长,则将额外的字母附加到合并字符串的末尾。
我试过:
输入:word1 = "abc", word2 = "pqr"
预期输出:"apbqcr"
my输出:""

ltskdhd1

ltskdhd11#

初始容量与长度

密码:

StringBuilder ans = new StringBuilder(length);

为字符串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整数。
搜索堆栈溢出以了解更多信息,因为这已经被多次覆盖。

相关问题