JavaScript程序查找字典序最小的字符串旋转
我们将使用 JavaScript 查找字典序最小的字符串旋转。该方法涉及将原始字符串与其自身连接起来,然后使用内置的“sort”函数按升序对连接后的字符串进行排序。最后,我们将返回排序后的连接字符串中最小的子字符串,该子字符串与原始字符串具有相同的长度。这将是字典序最小的字符串旋转。
我们将通过利用 JavaScript 中可用的字符串操作技术和内置函数来实现此逻辑。我们的实现结果将是一个字符串,表示输入字符串的字典序最小的旋转。这将有助于以有效的方式比较和排序字符串。
将来,我们将继续改进算法,使其更快、更高效地查找字典序最小的字符串旋转。
方法
以下是查找字典序最小的字符串旋转的方法的 5 行说明:
将原始字符串与其自身连接起来,以确保考虑所有可能的旋转。
找到第一个不等于其下一个字符的字符,这将是最小旋转的起始点。
如果找不到此类字符,则返回原始字符串,因为它已经是最小旋转。
返回连接字符串的子字符串,该子字符串从找到的字符开始到字符串末尾,作为最小旋转。
结果子字符串将是字典序最小的字符串旋转。
示例
可以通过将原始字符串与其自身连接起来并找到以原始字符串的第一个字符开头的最小子字符串来找到字典序最小的字符串旋转。
以下是 JavaScript 中此实现的示例:
function findLexicographicallyMinimumStringRotation(str) { let strDouble = str + str; let len = str.length; let minRotation = strDouble.substring(0, len); for (let i = 1; i < len; i++) { let currRotation = strDouble.substring(i, i + len); if (currRotation < minRotation) { minRotation = currRotation; } } return minRotation; } const str = 'eadbc'; console.log(findLexicographicallyMinimumStringRotation(str));
Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.
解释
首先,我们将原始字符串与其自身连接起来以获得 **strDouble**。
我们还定义一个变量 **len** 来存储原始字符串的长度。
然后,我们使用 **strDouble**. **substring(0, len)** 初始化 **minRotation**,它是来自 **strDouble** 的长度为 **len** 的第一个子字符串。这是我们查找字典序最小的字符串旋转的起点。
然后,我们使用 for 循环遍历 **strDouble** 中长度为 **len** 的所有可能的子字符串,从第二个字符开始。
对于每次迭代,我们通过从 **strDouble** 获取长度为 **len** 的子字符串来找到当前旋转 **currRotation**,该子字符串从当前位置 **i** 开始。
如果 **currRotation** 小于 **minRotation**,我们使用当前旋转更新 **minRotation**。
最后,在 for 循环结束后,我们返回 **minRotation** 的值,它是字典序最小的字符串旋转。