替换字符串中连续出现的指定字符串

本题来自《程序员代码面试指南》(左程云)著

题目:给定三个字符串str,from,to,已知from字符串中无重复字符,把str中所有的from字符串替换为to字符串,然后替换后的字符串。

举例:str="123abc",from="abc",to="456",return "123456";

import java.io.*;
class test  
{
	public static void main (String[] args) throws java.lang.Exception
	{
		String aa="sfsf3hkj435-434kjfd--535sdfgs";
		String result=replace(aa,"435","aaaaaaaaaaaaaaa");
		System.out.println(result);
	}
    public static String replace(String str,String from,String to){
        
        if(str==null||str.equals("")||from==null||from.equals("")){
            return str;
        }
        char[] strArr=str.toCharArray();
        char[] fromArr=from.toCharArray();
        int match=0;
        for(int i=0;i<strArr.length;i++){
            if(strArr[i]==fromArr[match]){
                match++;
                if(match==fromArr.length){
                    clear(strArr,i,fromArr.length);
                    match=0;
                }
            }else{
                match=0;
            }
        }
        String result="";
        String cur="";
        for(int i=0;i<strArr.length;i++){
            if(strArr[i]!=0){
                cur=cur+String.valueOf(strArr[i]);
            }
            if(strArr[i]==0&&(i==0||strArr[i-1]!=0)){
                result=result+cur+to;
                cur="";
            }
        }
        if(!cur.equals("")){
            result=result+cur;
        }
        return result;
    }
    
    public static void clear(char[] str,int end ,int length){
        while(length!=0){
            str[end]=0;
            end--;
            length--;
        }
    }
    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值