Cho chuỗi str và Q truy vấn mỗi truy vấn gồm hai giá trị a và b. Nhiệm vụ: kiểm tra ký tự tại chỉ số a và b có giống nhau không.
Mô tả vấn đề
Mỗi truy vấn kiểm tra ký tự tại chỉ số a và b có trùng nhau, trả về kết quả.
Ví dụ:
Đầu vào: str = "tutorialspoint", Q = 2, Truy vấn = {{0, 2}, {4, 7}}
Đầu ra: Lặp lại / Không lặp lại
Giải thích
Truy vấn 1: chỉ số 0 là 't', chỉ số 2 là 't' - giống nhau.
Truy vấn 2: chỉ số 4 là 'r', chỉ số 7 là 'l' - khác nhau.
Phương pháp giải
Kiểm tra sự tương đương của phần tử tại a và b. Nếu chỉ số lớn hơn độ dài chuỗi, lấy (chỉ_số % độ_dài) để lấy chỉ số thực. Dùng chỉ số mới so sánh.
Ví dụ
#include <iostream>
#include <string>
using namespace std;
bool isrepeated(string str, int len, int a, int b) {
if (a > len) a %= len;
if (b > len) b %= len;
if (str[a] == str[b]) return true;
else return false;
}
int main() {
string str = "tutorialspoint";
int len = str.length();
int Q = 3;
int query[Q][2] = {{0, 2}, {3, 32}, {5, 18}};
for (int i = 0; i < Q; i++) {
if (isrepeated(str, len, query[i][0], query[i][1]))
cout << "Ký tự lặp lại ở cả hai chỉ số" << endl;
else
cout << "Ký tự không lặp lại ở cả hai chỉ số" << endl;
}
return 0;
}
Đầu ra
Ký tự lặp lại ở cả hai chỉ số Ký tự không lặp lại ở cả hai chỉ số Ký tự không lặp lại ở cả hai chỉ số