当前位置: 面试刷题>> 重复字符串匹配 (经典算法题500道)
### 题目描述补充
题目:**重复字符串匹配**
给定两个字符串 `s` 和 `p`,你的任务是检查是否可以通过将字符串 `p` 中的字符进行任意次数的重复,使得字符串 `p` 成为字符串 `s` 的子串。如果可以实现,则返回 `true`;否则,返回 `false`。
**示例 1**:
```
输入: s = "abab", p = "ab"
输出: true
解释: 可以通过重复 "ab" 来得到 "abab"。
```
**示例 2**:
```
输入: s = "abab", p = "abab"
输出: true
解释: 字符串 "abab" 已经与自身相同,因此无需重复。
```
**示例 3**:
```
输入: s = "leetcode", p = "etc"
输出: false
解释: 无论如何重复 "etc",都无法在 "leetcode" 中找到它作为子串。
```
### PHP 示例代码
```php
function repeatedStringMatch($s, $p) {
$lenS = strlen($s);
$lenP = strlen($p);
$repeated = '';
while (strlen($repeated) < $lenS + $lenP) { // 确保重复长度至少能覆盖s和p的长度和
$repeated .= $p;
if (strpos($repeated, $s) !== false) {
return true;
}
}
return false;
}
// 测试示例
echo repeatedStringMatch("abab", "ab") ? "true" : "false"; // 输出 true
echo repeatedStringMatch("abab", "abab") ? "true" : "false"; // 输出 true
echo repeatedStringMatch("leetcode", "etc") ? "true" : "false"; // 输出 false
```
### Python 示例代码
```python
def repeatedStringMatch(s: str, p: str) -> bool:
repeated = ''
while len(repeated) < len(s) + len(p):
repeated += p
if p in repeated:
return True
return False
# 测试示例
print(repeatedStringMatch("abab", "ab")) # 输出 True
print(repeatedStringMatch("abab", "abab")) # 输出 True
print(repeatedStringMatch("leetcode", "etc")) # 输出 False
```
### JavaScript 示例代码
```javascript
function repeatedStringMatch(s, p) {
let repeated = '';
while (repeated.length < s.length + p.length) {
repeated += p;
if (repeated.includes(s)) {
return true;
}
}
return false;
}
// 测试示例
console.log(repeatedStringMatch("abab", "ab")); // 输出 true
console.log(repeatedStringMatch("abab", "abab")); // 输出 true
console.log(repeatedStringMatch("leetcode", "etc")); // 输出 false
```
**码小课网站中有更多相关内容分享给大家学习**,包括但不限于算法基础、数据结构、编程语言进阶等,欢迎访问码小课网站深入学习。