题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
事实上,我们并不需要在每次删除一个字符的时候都去移动后面所有的字符。我们可以设想,当一个字符需要被删除的时候,我们把它所占的位置让它后面的字符来填补,也就相当于这个字符被删除了。在具体实现中,我们可以定义两个指针(pFast和pSlow),初始的时候都指向第一字符的起始位置。当pFast指向的字符是需要删除的字符,则pFast直接跳过,指向下一个字符。如果pFast指向的字符是不需要删除的字符,那么把pFast指向的字符赋值给pSlow指向的字符,并且pFast和pSlow同时向后移动指向下一个字符。这样,前面被pFast跳过的字符相当于被删除了。用这种方法,整个删除在O(n)时间内就可以完成。
pSlow是改变后的指针,pFast是改变前的指针,可以把pSlow想象成另外一个数组,如果pFast遍历的那个元素符合要求就拷贝到pSlow中,如果不符合就不拷贝;只不过这里用一个数组实现的
分享到:
相关推荐
"程序员面试题精选100题"是一个集合了多种算法和编程问题的资源,旨在帮助程序员们更好地应对面试挑战。下面将详细探讨这些精选题目所涉及的知识点。 1. **基础算法**:面试中常见的基础算法题包括排序(如快速排序...
【程序员面试题精选100题【数据结构 /算法】】是针对求职程序员精心挑选的一系列面试题目,涵盖了数据结构和算法两大核心领域。这些题目旨在帮助应聘者提高面试技巧,提升对技术的理解,以便在激烈的就业市场竞争中...
在程序员的面试中,字符串操作是一项常见的考察点。本题目的核心是输出一个给定字符串的所有子串,这里我们以字符串 "abc" 为例来详细讲解解题思路和方法。 首先,我们需要理解子字符串的概念。在字符串 "abc" 中,...
- **在字符串中删除特定的字符**:可以使用双指针法,一个指针用于读取原字符串,另一个指针用于写入结果字符串。 - **IT公司笔试题算法部分**:这部分包含了更多具体的算法题,如递归实现回文判断、求网格中的黑点...
这篇文档集合了程序员面试的核心知识点,旨在帮助求职者在面对各种技术面试时能有更全面的准备。以下是对这些文件内容的概要和解析: 1. **测试Testframework.doc**: 这份文档可能涵盖了测试框架的相关知识,如...
本资料集"程序员面试题大集合"专注于C语言的笔试题,旨在帮助求职者在企业面试和笔试中脱颖而出。 首先,我们要理解C语言的基础知识。C语言是一种结构化编程语言,它提供了丰富的控制语句,如if-else、switch-case...
【PHP面试题】是针对普通PHP程序员的笔试与面试准备资料,旨在测试和提升候选人在PHP编程语言、Web开发以及相关技术领域的知识水平。以下是一些可能出现在面试中的关键知识点,涵盖基础到进阶,包括但不限于: 1. *...
【程序员面试试题】是面试中常见的一类问题,主要针对候选人的编程技能、问题解决能力以及对基础概念的理解进行测试。以下是对这些试题的详细分析和解析。 首先,试题1展示了strcpy函数的不当使用。strcpy函数用于...
ASP.NET 初级程序员面试题涉及了多个核心概念和技术,以下是对这些知识点的详细解析: 1. 访问修饰符:`private`、`protected`、`public`、`internal`是C#中的访问控制修饰符,它们决定了类成员的可见性。 - `...
Java 程序员面试题 Java 程序员面试题包括多个方面,以下是详细的知识点解释: 1. 面向对象的特征有哪些方面? 面向对象的特征有四个方面:抽象、继承、封装、多态性。 * 抽象:抽象是忽略一个主题中与当前目标...
在程序员面试过程中,面试官常常会提出各种各样的问题来测试候选人的技能和思维能力。这些题目涵盖了数据结构、算法、编程语言特性等多个方面。下面我们将详细探讨两个常见的面试题及其解题思路。 第一个题目是“从...
### JAVA程序员面试题5知识点详解 #### 一、JSP和Servlet的相同点与不同点及其联系 **相同点:** - **都是基于Java的技术**:JSP和Servlet都使用Java语言编写,运行在Java虚拟机(JVM)上。 - **处理HTTP请求**:...
【JAVA程序员面试试题精选】 1. 题目解析: 这个题目涉及Java的循环语句。在提供的代码中,我们看到一个for循环,它的结构是`for (foo('A'); foo('B')&&(i); foo('C')){...}`。循环条件部分由三部分组成:初始化...
以上知识点涵盖了数据类型、指针、数组、字符串处理、函数指针等多个方面的编程知识,这些都是IT行业中,尤其是软件开发领域中常见的技术点,尤其在华为这样的高科技公司面试中,这些知识点的掌握程度往往能反映应聘...
这份"初级程序员面试题"旨在考察候选人的基本素质,确保他们具备入门级编程所需的技能和理解力。下面,我们将深入探讨这些面试题可能涵盖的知识点,帮助准备面试的候选人了解可能面对的挑战。 1. **基础编程概念** ...
【程序员面试题集锦】是针对IT行业,尤其是Java编程方向的面试者精心整理的一份资源,涵盖了各大公司的面试题目以及数据结构相关的知识点。这份资料旨在帮助应聘者全面准备面试,提升自己的技术水平和应试能力。 一...
字符串处理面试题总结 字符串处理是程序员日常工作中最常遇到的问题,能够体现程序员的基本功。下面是关于字符串处理的面试题总结: 一、求字符串的最小后继 问题:实现一个函数,输入一个字符串,输出该字符串的...
《C/C++程序员应聘常见面试题》是一份珍贵的资源,涵盖了知名IT公司在招聘C/C++程序员时可能会遇到的各种面试问题。这些问题不仅测试面试者的编程基础,还考察他们的逻辑思维和问题解决能力。以下是其中一些重点知识...