zoukankan      html  css  js  c++  java
  • 《程序员代码面试指南》第五章 字符串问题 替换字符串中连续出现的指定字符串

    题目

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

    java代码

    package com.lizhouwei.chapter5;
    
    /**
     * @Description: 替换字符串中连续出现的指定字符串
     * @Author: lizhouwei
     * @CreateDate: 2018/4/23 22:39
     * @Modify by:
     * @ModifyDate:
     */
    public class Chapter5_6 {
    
        public String replace(String str, String from, String to) {
            char[] chars = str.toCharArray();
            char[] charf = from.toCharArray();
            int mi = 0;
            int si = 0;
            for (int i = 0; i < chars.length; i++) {
                if (chars[i] == charf[mi++]) {
                    if (mi == charf.length) {
                        si = i;
                        while (mi-- != 0) {
                            chars[si--] = '0';
                        }
                        mi = 0;
                    }
                } else {
                    mi = 0;
                }
            }
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < chars.length; i++) {
                if (chars[i] != '0') {
                    sb.append(chars[i]);
                }
                if (chars[i] == '0' && (i == 0 || chars[i - 1] != '0')) {
                    sb.append(to);
                }
            }
            return sb.toString();
        }
    
        //测试
        public static void main(String[] args) {
            Chapter5_6 chapter = new Chapter5_6();
            String str1 = "123abcabc";
            String str2 = "abc";
            String str3 = "4567";
            System.out.println("将123abcabc中abc替换为4567:" + chapter.replace(str1, str2, str3));
        }
    }
    
    

    结果

  • 相关阅读:
    5月18日InterlliJ IDea快捷键
    5月17日-集合构架Collection学习
    十一java作业1
    十一java作业2
    第一周,java模拟ATMdos界面程序源代码及感想
    8.27-9.2第八周
    8.20-8.26第七周
    8.13-8.19第六周
    8.6-8.12第五周
    7.30-8.5第四周
  • 原文地址:https://www.cnblogs.com/lizhouwei/p/8934048.html
Copyright © 2011-2022 走看看