Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Truy vấn ký tự trong chuỗi lặp lại trong C++

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ố