JavaScript 字符串替换

投简历的时候遇到一道算法题实现起来不难,思路如下,如有错误欢迎指正。

题目: A、B、C是3个字符串。把A中包含的所有B都替换为C,如果替换以后还有B就继续替换,直到A不包含B为止。
1.请编写程序实现以上功能。不允许使用系统提供的字符串比较、查找和替换函数。2.以上程序是否总是能正常输出结果?如果不是,列出哪些情况下无法正常输出结果,尽可能详细和全面。

思路:
无效情况:考虑一下一眼能看出来的无效情况,当字符串B的长度大于A的时候,A包含不了B,属于无效。

总体思路:1.找到B在A中的位置 2.去除字串B 3.将C插入进B的位置。

详细思路:拿B的第一位和A的每一位循环比较,如果相等,再用B的每一位和A的后面的进行比较,有一不等则break, 全部相等则记录一下此时B的第一位在A中的位置,如此反复直到外层循环结束,循环结束时有记录就进行替换。

function str(A, B, C) {
        let arrA = A.split("");
        let arrB = B.split("");
        let arrC = C.split("");
        let flag = true;
        let index = []

        if(arrA.length < B.length){
            return A;
        }
        for(let i = 0; i < arrA.length; i++){
            if(arrB[0] === arrA[i]){
                for(let j = 1; j < arrB.length; j++){
                    if(arrB[j] !== arrA[i+j]){
                        flag = false;
                        break;
                    }
                }
                if(flag){
                   index.push(i);
                }
                
            }
            flag = true; 
        }
        if(index.length > 0){
            for(i of index){
                arrA.splice(i, arrB.length, ...arrC);
            } 
        }
        return arrA.join("");
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值