Computer >> Máy Tính >  >> Lập trình >> C ++

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

Trong bài toán này, chúng ta được cung cấp một chuỗi str và truy vấn Q bao gồm hai giá trị a và b. Nhiệm vụ của chúng tôi là tạo một chương trình để giải quyết các Truy vấn cho ký tự trong một chuỗi lặp lại trong C ++.

Mô tả vấn đề

Để giải quyết từng truy vấn, chúng ta cần kiểm tra xem các ký tự ở chỉ mục a và b có giống nhau hay không và trả về giá trị tương ứng.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầ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

Đối với truy vấn 1 , ký tự ở chỉ mục 0 là t và ký tự ở chỉ mục 2 là t. Cả hai đều là ký tự giống nhau.

Đối với Truy vấn 1, ký tự ở chỉ số 4 là r và ký tự ở chỉ số 7 là l. Cả hai không phải là các ký tự giống nhau.

Phương pháp tiếp cận giải pháp

Để giải quyết vấn đề, chúng ta chỉ cần kiểm tra sự tương đương của các phần tử tại chỉ số a và b. Nếu bất kỳ chỉ mục nào lớn hơn độ dài của chuỗi, be sẽ tìm giá trị của (chỉ mục% len), để lấy chỉ mục của ký tự. Và người dùng chỉ mục 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<<"Character is repeated in both the index values"<<endl;
      else
         cout<<"Character is not repeated in both the index values"<<endl;
   }
   return 0;
}

Đầu ra

Character is repeated in both the index values
Character is not repeated in both the index values
Character is not repeated in both the index values