JavaScript 程式檢查字串是否可以透過旋轉另一個字串 2 位得到
我們給出了兩個字串 s1 和 s2,我們必須檢查是否可以透過旋轉另一個字串 2 位來獲得一個字串。我們可以沿逆時針或順時針方向旋轉字串。在這裡,如果兩個字串在字串旋轉 2 位後匹配,則必須列印“是”,否則,必須列印“否”。
示例
讓我們假設我們給出了兩個字串 s1 和 s2 作為
示例 1
Input: s1 = “TutorialsPoint”, s2 = “PointTutorials” Output: No
解釋:這裡 s2 是字串 s1 逆時針旋轉 9 位的結果,也是 s1 順時針旋轉 5 位的結果。兩者都不是 2 位旋轉,因此輸出為“否”。
示例 2
Input: s1 = “TutorialsPoint”, s2 = “torialsPointTu” Output: Yes
解釋:這裡 s2 是字串 s1 逆時針旋轉 2 位的結果,也是 s1 順時針旋轉 12 位的結果。其中一個是 2 位旋轉,因此輸出為“是”。
子字串方法
我們已經看到了上面的例子,現在讓我們看看實現程式碼的步驟 -
首先,我們將實現一個函式,該函式將字串作為引數,並返回字串向左旋轉 2 個索引的結果。
在這個函式中,首先我們將使用子字串方法分割字串,然後將其重新連線。
與第一種方法類似,我們將定義另一個函式,透過分割將字串向右旋轉 2 個索引並返回。
我們的主要工作將在一個新函式中定義,我們將把這兩個字串作為引數,然後比較它們的長度是否相同,如果不相同則返回 false。
我們將呼叫左旋轉和右旋轉函式,並將它們都獲取。之後我們將匹配它們,如果其中任何一個與第二個字串匹配,我們將列印是,否則列印否。
示例
在下面的示例中,我們檢查字串是否可以透過旋轉另一個字串 2 位得到。以下是輸入和預期輸出。
輸入:str1 = TutorialsPoint str2 = torialsPointTu
預期輸出:是
// function to rotate the string in the left direction
function left_rotate(str){
// splitting the string and then again joining back
str = str.substr(2) + str.substr(0,2);
return str;
}
// function to rotate the string in the right direction
function right_rotate(str){
// getting the length of the string
var len = str.length
// splitting the string and then again joining back
str = str.substr(len-2) + str.substr(0,len-2)
return str;
}
// function to check if one string is equal to another after two rotations
function check(str1, str2){
// checking the size of both strings
if(str1.length != str2.length){
return false;
}
// getting the left rotation of given string
var l_str = left_rotate(str1);
// getting the right rotation of given string
var r_str = right_rotate(str1);
if(r_str == str2 || l_str == str2){
return true;
} else {
return false;
}
}
// defining the strings
var str1 = "TutorialsPoint"
var str2 = "torialsPointTu"
console.log("The given strings are " + str1 + " and " + str2);
// calling the function
if(check(str1,str2)){
console.log("Yes, we can obtain the second string from the given string after two rotations");
}
else{
console.log("No, we cannot obtain the second string from the given string after two rotations");
}
輸出
The given strings are TutorialsPoint and torialsPointTu Yes, we can obtain the second string from the given string after two rotations
時間複雜度和空間複雜度
上面程式碼的時間複雜度為 O(N),其中 N 是給定字串的大小。我們已經分割了給定字串兩次,並且我們還比較了給定字串,使得時間複雜度為 O(N)。
上面程式碼的空間複雜度為 O(1),因為我們在這裡沒有使用任何額外的空間。
結論
在本教程中,我們實現了一個 JavaScript 程式來檢查兩個給定的字串是否可以透過沿逆時針或順時針方向旋轉其中一個字串而變得相等。我們使用子字串方法分割字串,然後將其重新連線以進行兩次旋轉。程式碼的時間複雜度為 O(N),我們沒有使用任何額外的空間。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP