博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
腾讯实习生面试题--替换字符串中指定子串
阅读量:4092 次
发布时间:2019-05-25

本文共 769 字,大约阅读时间需要 2 分钟。

第一次在面试中手写算法,果然异常紧张,当时表现应该很不好吧,按照第一反应飞快写出来了一个有错误的版本。。。晚上在实验室仔细琢磨了一下这道题,发现早上自己写的简直。。。啊,我要尴尬死了!

题目描述:

写一个方法,实现将一个字符串中指定子串,全部替换为我们指定的目标串,如输入”abcdabc“,将其中"ab"全部替换为”ccc“。

输入

3个字符串

输出

void

思路:

从左向右扫描,如果可以切下ta长度的子串的话,就切下,与ta比较是否equals,如果equals,sb中加入th,如果不equals,sb加入切下子串temp的第一个字符,然后指针后移一位。如果文本串不足以切下ta长度,逐个加入文本串中指针i所在位置的字符,然后i后移一个位置。

反思:

当时写的程序没有考虑到,替换之后文本串的长度改变问题,以至于面试官问如果把c替换为ccb会不会出现无限循环的问题?按照下面的程序,当然不会出现这种情况,因为i作为指针,它之前的部分都是处理好的,它的移动也是根据不同情况变步长的。

当然这个问题坑很深,对java中字符串常用的方法得很熟才行,如subString带两个参数时第二个参数是可以等于文本串的长度的,这时不会越界,并且第一个if处,也应该加=。

import java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.Scanner;public class Main{	public static void change(String ori,String ta,String th){		StringBuilder sb = new StringBuilder();		for(int i=0;i

转载地址:http://gfdii.baihongyu.com/

你可能感兴趣的文章
如何优化Web前端技术开发生态体系
查看>>
已解决:E: Couldn't find package proftpd
查看>>
iOS及Mac开源项目和学习资料【超级全面】
查看>>
androi 多线程
查看>>
能帮我们学习吉他的音乐软件——Guitar Pro
查看>>
洛谷P1083 借教室
查看>>
d3.js做的柱状图
查看>>
自定义异常
查看>>
Redis概述
查看>>
嵌入式成长轨迹18 【Linux应用编程强化】【Linux下的C编程 下】【标准输入输出】...
查看>>
((完美有效))安卓神器XPOSED框架不用root安装指南
查看>>
全局对象
查看>>
面向对象思想的胜利 -01
查看>>
脚本自动获取IP配置&脚本静态IP配置
查看>>
复习笔记之矩阵快速幂(不定时更新)
查看>>
目录命令(tree)
查看>>
应该读的开源代码
查看>>
linux_shell_获取日期相关
查看>>
Uva 839天平(二叉树dfs, 递归建树)
查看>>
[UE4]地图缩放
查看>>