前言:两天前参加阿里游戏的面试,一面时出了一道面试题。那时我看楞了,好像没做过这种题型,看起来很容易又很难。很容易是,使用O(N^2)就可以解决,难得是,优化时间复杂度。
题目:字符串删除字符(字符可能会有重复,要一起删掉)
思路一(反正面试我没这么写,你们随便看看)
一开始看到题目,思路就遍历字符串,一个个字符比较,然后删除它。
(1) 遍历数组,找到目标字符;
(2) 移动目标字符后面的所有字符,各向前移动复制1位;
(3) 删除最后一位字符(或标识它不可用);
(4) 重复(1)直至循环结束。
优点(当然有):容易想出来,代码逻辑简单;
缺点:时间复杂度O(N^2)。
public static String deleteChar(String str, char c)
{
if (str == null || "".equals(str)) return str;