2、替换空格

1、直接调用java自带函数
运行时间:24ms, 占用内存:9504K

public class Solution {
    public String replaceSpace(StringBuffer str) {
        return str.toString().replace(" ","%20");
    }
}

PS:stringBuffer输出为string类型时一定要记得转换!
关于string,stringbuffer 和stringbuilder的区别的博客:https://blog.csdn.net/u011702479/article/details/82262823

2、双指针遍历
运行时间:17ms, 占用内存:9548K
【思路】:先遍历一遍,找出所有的空格,并计算出新的字符串长度(因为是stringBuffer类型,所以可以设定字符串长度),然后从尾向前遍历字符串,遇到空格就转换为“%20”,直到两个指针指向同一个位置,表明以没有空格存在。

public class Solution {
    public String replaceSpace(StringBuffer str) {
        int len1=str.length();
        int len2=len1;
        for(int i=0;i<len1;i++){
            if (str.charAt(i) == ' '){
                len2 =len2+2;
            }
        }
        str.setLength(len2);
        while(len1!=len2){
            if (str.charAt(len1-1) == ' '){
                str.setCharAt(len2-1, '0');
                len2--;
                str.setCharAt(len2-1, '2');
                len2--;
                str.setCharAt(len2-1, '%');
                len2--;
            }else{
                str.setCharAt(len2-1, str.charAt(len1-1));
                len2--;
            }
            len1--;
        }
        return str.toString();
    }
}

PS:字符串从后向前遍历时,charAt(index),index应该为len-1

全部评论

相关推荐

叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务