【发布时间】:2018-04-25 19:41:09
【问题描述】:
我正在尝试编写一个接收两个字符串参数的函数,并检查第二个参数是否是第一个字符串的旋转版本。
所以结果如下:
checkRotationStrings('waterbottle', 'lewaterbott'); // true
checkRotationStrings('waterbottle', 'bottlewater'); // true
checkRotationStrings('waterbottle', 'erbottlewat'); // true
checkRotationStrings('waterbottle', 'lewaterbottx'); // false
我编写了以下代码,但有些边缘情况我似乎无法弄清楚:
function checkRotationStrings(string, rotatedString) {
let result;
let rotationCheck
let stringArr = string.split('');
let rotatedStringArr = rotatedString.split('')
for (let i = 0; i < string.length - 1; i++) {
if (rotatedString[0] === stringArr[i]) {
result = stringArr.slice(i);
rotationCheck = stringArr.slice(0, i).concat(result).join('');
}
}
console.log(rotationCheck)
if (rotationCheck === string){
return true;
} else {
return false;
}
}
任何帮助将不胜感激。
【问题讨论】:
-
哪些边缘情况?
-
例如,我将在原始字符串中找到rotatedString 中的第一个字母的字符串打断。假设它是
waterbottle和ttlewaterb。字母t将首先在索引2中找到,而不是在我要切片的索引7中。 -
checkRotationStrings('waterbottle', 'erbottllewat'); // true应该是false -
我建议避免使用
string作为变量名,因为它非常接近String对象。
标签: javascript algorithm