博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
面试总结之 pslow pfast 方法
阅读量:6083 次
发布时间:2019-06-20

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

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
解决方法: 事实上,我们并不需要在每次删除一个字符的时候都去移动后面所有的字符。我们可以设想,当一个字符需要被删除的时候,我们把它所占的位置让它后面的字符来填补,也就相当于这个字符被删除了。在具体实现中,我们可以定义两个指针(pFast和pSlow),初始的时候都指向第一字符的起始位置。当pFast指向的字符是需要删除的字符,则pFast直接跳过,指向下一个字符。如果pFast指向的字符是不需要删除的字符,那么把pFast指向的字符赋值给pSlow指向的字符,并且pFast和pSlow同时向后移动指向下一个字符。这样,前面被pFast跳过的字符相当于被删除了。用这种方法,整个删除在O(n)时间内就可以完成。 pSlow是改变后的指针,pFast是改变前的指针,可以把pSlow想象成另外一个数组,如果pFast遍历的那个元素符合要求就拷贝到pSlow中,如果不符合就不拷贝;只不过这里用一个数组实现的

 

转载于:https://www.cnblogs.com/leetcode/p/3199777.html

你可能感兴趣的文章
生鲜电商“朴朴超市”完成B1轮5500万美元融资,平均送达用时24min ...
查看>>
5G商用道阻且长,加快其进程的最佳路径是什么?
查看>>
HTA免杀
查看>>
【视频分析】大规模机器学习在爱奇艺视频分析理解中的实践
查看>>
如何用纯 CSS 创作锡纸撕开的文字效果
查看>>
服务器禁ping的好处和坏处是什么
查看>>
怎么规划一个零基础学习Unity3D的“方法”或者“流程”?
查看>>
RecyclerView完全解析
查看>>
东南亚科技公司BLUE Mobile完成C轮融资,蚂蚁金服领投、愉悦资本跟投
查看>>
彻底弄懂 Java 线程池原理
查看>>
SAP UI5和微信小程序对比之我见
查看>>
Windows系统云服务器如何使用阿里云镜像一键部署 Web 环境?
查看>>
搭建Git服务器并感受hook使用
查看>>
误删了公司数据库,但我还是活下来了
查看>>
JSON for Modern C++ 3.6.0 发布
查看>>
QBit开发微服务
查看>>
从0开始简单使用git进行项目开发【SourceTree+Coding.net】
查看>>
WPF关闭应用程序方法
查看>>
JavaScript学习(十一)--数值处理对象
查看>>
Asp.Net Core Web Api图片上传(一)集成MongoDB存储实例教程
查看>>