算法刷题系列,详解解题过程中遇到的知识点,解释过一遍的知识点不会重复解释。
题目
解题思路
通过让字符串重复一次 判断是否包含另一个字符串。
代码
/**
* @param {string} s
* @param {string} goal
* @return {boolean}
*/
var rotateString = function(s, goal) {
return s.length === goal.length && (s + s).includes(goal);
};
复杂度分析
空间复杂度 O(n)
一维数组空间,存储了 n 个元素。
时间复杂度 O(n^2)
比较一个字符串是否包含另一个字符串O(n^2)
要点详解
1. includes 使用
语法
str.includes(searchString[, position])
参数
- searchString 要在此字符串中搜索的字符串。
- 从当前字符串的哪个索引位置开始搜寻子字符串,默认值为
0。
返回值
如果当前字符串包含被搜寻的字符串,就返回 true;否则返回 false。
includes 的实现
if (! String.prototype.includes) {
Object.defineProperties(String.prototype, "includes", {
value: function (searchString, position = 0) {
if (typeof position !== 'number') {
position = 0
}
if (position + searchString.length > this.length) {
return false
} else {
return this.indexOf(searchString, position) !== -1
}
}
})
}