Java 程式用於在常數時間內查詢給定字串的旋轉和第 K 個字元
在這個問題中,程式設計師需要對字串執行查詢。此外,還需要旋轉字串並列印更新後的字串的字元。解決此問題的最佳方法是不斷更新索引值,並在需要列印字元時訪問字串字元。
問題陳述 – 我們給定字串 alpha 和包含名為 'que' 的數字對的陣列。任務是在字串 alpha 上執行陣列中給出的查詢。
遵循以下查詢操作規則。
(1, a) – 對給定字串進行總共左旋轉。
(2, a) – 列印第 a 個位置的字元。
注意 – 這裡,a 的值是 1 到 N,其中 N 是字串的長度。
示例
輸入
que[][] = { { 1, 1 }, { 2, 1 }, { 2, 5 }, { 1, 3 } }, alpha = "wqedsdcs";
輸出
q, d
解釋 – 讓我們逐一在字串上執行所有查詢。
第一個查詢將字串旋轉 1 位,更新後的字串將為 'qedsdcsw'。
第二個查詢列印第 1 個位置的字元,即 'q'。
第三個查詢列印第 5 個位置的字元,即 'd'。
第四個查詢進行 3 次左旋轉。
輸入
que[][] = { { 1, 1 }, { 2, 3 }, { 1, 8 }, { 2, 7 } }, alpha = "tutorialspoint"
輸出
o, u
解釋
執行第一個查詢後,字串變為 'utorialspoint'。
更新後的字串中第 3 個位置的字元是 'o'。
執行第三個查詢後,字串變為 'pointtutorials'。
第 7 個位置的字元是 'u'。
方法 1
在這種方法中,我們定義索引指標來跟蹤當前索引。我們跟蹤最後一個索引以在最後一個索引上執行下一個查詢。
演算法
步驟 1 – 定義 'curr' 變數以跟蹤最新索引。
步驟 2 – 使用 for 迴圈遍歷查詢陣列。
步驟 3 – 從第 m 個索引獲取查詢,如果查詢對的第一個元素為 1,我們需要對最後更新的字串進行 'a' 次旋轉。
步驟 4 – 在這種情況下,我們將 'curr' 值更新為將對的第二個元素新增到 'curr' 並取其對 26 的模。
步驟 5 – 如果查詢對的第一個元素為 2,我們需要列印給定索引處的字元。
步驟 6 – 將 'curr' 變數的值更新為將查詢對的第二個元素新增到 'curr' 並取其對 26 的模。
步驟 7 – 訪問原始字串中 'curr' 索引處的字元。此外,在輸出中顯示字元。
示例
import java.util.*;
public class main {
static void executeQueries(String alpha, int str_len, int que[][], int que_len) {
// Current pointer pointing to the starting
int curr = 0;
// Traverse array
for (int m = 0; m < que_len; m++) {
// Query rotation
if (que[m][0] == 1) {
// Update value of curr
curr = (curr + que[m][1]) % str_len;
} else {
int ch = que[m][1];
// Get the index of the character in rotation
int index = (curr + ch - 1) % str_len;
// Show output
System.out.println(alpha.charAt(index));
}
}
}
public static void main(String[] args) {
String alpha = "wqedsdcs";
int str_len = alpha.length();
int que[][] = { { 1, 1 }, { 2, 1 },
{ 2, 5 }, { 1, 3 } };
int que_len = que.length;
executeQueries(alpha, str_len, que, que_len);
}
}
輸出
q d
時間複雜度 – O(M),因為我們逐一執行所有查詢。
空間複雜度 – O(1),因為我們沒有使用任何動態空間。
程式設計師也可以嘗試使用樸素方法來解決問題。在樸素方法中,程式設計師可以旋轉字串以執行第一個查詢,並訪問更新後的字串中的字元以執行第二個查詢。執行字串旋轉的方法有 1 到 2 種不同的方法;一種是將字串與其自身連線起來並獲取其子字串。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP