mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-08 16:54:50 +08:00
Merge pull request #1981 from juguagua/leetcode-add-complexity-analysis-String
添加复杂度分析:String 部分
This commit is contained in:
@ -444,6 +444,8 @@ public:
|
||||
};
|
||||
|
||||
```
|
||||
* 时间复杂度: O(n + m)
|
||||
* 空间复杂度: O(m), 只需要保存字符串needle的前缀表
|
||||
|
||||
# 前缀表(不减一)C++实现
|
||||
|
||||
@ -540,6 +542,9 @@ public:
|
||||
}
|
||||
};
|
||||
```
|
||||
* 时间复杂度: O(n + m)
|
||||
* 空间复杂度: O(m)
|
||||
|
||||
|
||||
# 总结
|
||||
|
||||
|
@ -114,6 +114,7 @@ void removeExtraSpaces(string& s) {
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
有的同学可能发现用erase来移除空格,在leetcode上性能也还行。主要是以下几点;:
|
||||
|
||||
1. leetcode上的测试集里,字符串的长度不够长,如果足够长,性能差距会非常明显。
|
||||
@ -197,6 +198,9 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1) 或 O(n),取决于语言中字符串是否可变
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
||||
|
@ -130,6 +130,9 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1)
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -73,6 +73,8 @@ public:
|
||||
}
|
||||
};
|
||||
```
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1)
|
||||
|
||||
不过这种解法还有一个问题,就是 我们最终还是要判断 一个字符串(s + s)是否出现过 s 的过程,大家可能直接用contains,find 之类的库函数。 却忽略了实现这些函数的时间复杂度(暴力解法是m * n,一般库函数实现为 O(m + n))。
|
||||
|
||||
@ -185,6 +187,8 @@ public:
|
||||
}
|
||||
};
|
||||
```
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(n)
|
||||
|
||||
|
||||
前缀表(不减一)的C++代码实现:
|
||||
@ -219,6 +223,8 @@ public:
|
||||
}
|
||||
};
|
||||
```
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(n)
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
@ -65,6 +65,9 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1)
|
||||
|
||||
|
||||
|
||||
|
||||
@ -96,6 +99,9 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1)或O(n), 取决于使用的语言中字符串是否可以修改.
|
||||
|
||||
|
||||
另一种思路的解法
|
||||
|
||||
@ -116,6 +122,9 @@ public:
|
||||
};
|
||||
```
|
||||
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度: O(1)
|
||||
|
||||
|
||||
|
||||
## 其他语言版本
|
||||
|
@ -66,6 +66,9 @@ public:
|
||||
}
|
||||
};
|
||||
```
|
||||
* 时间复杂度: O(n)
|
||||
* 空间复杂度:O(1)
|
||||
|
||||
是不是发现这代码也太简单了,哈哈。
|
||||
|
||||
# 总结
|
||||
|
Reference in New Issue
Block a user