题目:
思路:对str和from字符串一个一个进行匹配,找到from字符串后,将其替换成0,最后输出时,将不为0的字符串拼接起来。
代码:
import java.util.*; public class zs2 { public static void main(String []args){ Scanner sc=new Scanner(System.in); String str=sc.next(); String from=sc.next(); String to=sc.next(); System.out.println(method(str,from,to)); } public static String method(String str,String from,String to){ // 输入的判断 if(str==null||from==null||str.equals("")||from.equals("")){ return str; } char[] str1=str.toCharArray(); char [] from1=from.toCharArray(); int m=0; for(int i=0;i<str1.length;i++){ //如果当前字符相等的话,就继续匹配后面的字符 if(str1[i]==from1[m++]){ //如果已经到达了from字符的最后,就调用method1将对应位置全部设置为0 if(m==from1.length){ method1(str1,i,from1.length); m=0; } } else{ //不匹配的话重新从from字符串的开头开始匹配 m=0; } } String res=""; String cur=""; for(int i=0;i<str1.length;i++){ if(str1[i]!=0){ cur=cur+String.valueOf(str1[i]); } //遇到一连串0中的第一个0 if(str1[i]==0&&(i==0||str1[i-1]!=0)){ res=res+cur+to; cur=""; } } if(!cur.equals("")){ res=res+cur; } return res; } //找到一个from数组并且将其都设置为0 public static void method1(char[]str1,int i,int length){ while(length--!=0){ str1[i--]=0; } } }