当前位置: 面试刷题>> 用isSubstring判断字符串的循环移动 (经典算法题500道)
### 题目描述补充
题目:给定两个字符串`s1`和`s2`,其中`s2`可能是`s1`的一个循环移动(即将`s1`的某个前缀移动到尾部得到的字符串)。请编写一个函数`isSubstringRotation`来判断`s2`是否是`s1`的循环移动。
例如:
- `s1 = "waterbottle"`
- `s2 = "erbottlewat"`
- 在这个例子中,`s2`是`s1`的循环移动(将`"water"`移动到尾部),所以`isSubstringRotation(s1, s2)`应该返回`true`。
### PHP 代码示例
```php
function isSubstringRotation($s1, $s2) {
if (strlen($s1) !== strlen($s2)) {
return false; // 如果两个字符串长度不同,直接返回false
}
$s1s1 = $s1 . $s1; // 将s1拼接自己,如果s2是s1的循环移动,s2必定是s1s1的子串
return strpos($s1s1, $s2) !== false; // 使用strpos查找s2是否是s1s1的子串
}
// 测试示例
$s1 = "waterbottle";
$s2 = "erbottlewat";
echo isSubstringRotation($s1, $s2) ? "true" : "false"; // 输出 true
```
### Python 代码示例
```python
def isSubstringRotation(s1, s2):
if len(s1) != len(s2):
return False # 如果两个字符串长度不同,直接返回False
s1s1 = s1 + s1 # 将s1拼接自己
return s2 in s1s1 # 判断s2是否是s1s1的子串
# 测试示例
s1 = "waterbottle"
s2 = "erbottlewat"
print(isSubstringRotation(s1, s2)) # 输出 True
```
### JavaScript 代码示例
```javascript
function isSubstringRotation(s1, s2) {
if (s1.length !== s2.length) {
return false; // 如果两个字符串长度不同,直接返回false
}
const s1s1 = s1 + s1; // 将s1拼接自己
return s1s1.includes(s2); // 判断s2是否是s1s1的子串
}
// 测试示例
const s1 = "waterbottle";
const s2 = "erbottlewat";
console.log(isSubstringRotation(s1, s2)); // 输出 true
```
**码小课**网站中有更多关于字符串处理、算法和数据结构的相关内容分享,欢迎大家学习交流。