MyStringBuffer类声明以下成员方法,要求每字符一次移动到位(数据结构-Java版-叶核亚-74页-思考题3-3)

题目:

MyStringBuffer类声明以下成员方法,要求每字符一次移动到位。

MyStringBuffer replace(int begin,int end,String s)

代码:

// 模仿insert()方法,和老师给的做法不同,我采用这种方法的篇幅也不是特别多

public synchronized MyStringBuffer replace(int begin, int end, String s)
{
    int i = begin;
    if (begin>=0 && begin<this.n && end>=0 && begin<=end)
    {
        if (end>this.n)
            end=this.n;
        if (s==null)
            s = "null";
        char[] temp=this.value;
        if (this.value.length < this.n+s.length()-(end-begin))
        {   this.value = new char[(this.value.length+s.length()-(end-begin))*2];
            for (int j=0; j<i; j++)
                this.value[j] = temp[j];
        }
        for (int j=this.n-1; j>=end; j--)
            this.value[j+s.length()-(end-begin)] = temp[j];
        for (int j=0; j<s.length(); j++)
            this.value[i+j] = s.charAt(j);
        this.n += s.length()-(end-begin);
        return this;
    }
    else throw new StringIndexOutOfBoundsException("i="+i);
}

你可能感兴趣的:(数据结构(第4版))