Queries for characters in a repeated string in C++

C++Server Side ProgrammingProgramming

In this problem, we are given a string str and Q queries consisting of two values a and b. Our task is to create a program to solve Queries for characters in a repeated string in C++.

Problem Description

To solve each query, we need to check whether the characters at index a and b are the same and return the value accordingly.

Let’s take an example to understand the problem,

Input: str = “tutorialspoint”

Q = 2

Query = {{0, 2}, {4, 7}}

Output:Repeated

Not Repeated

Explanation

For Query 1, the character at index 0 is t, and the character at index 2 is t. Both are the same characters.

For Query 1, the character at index 4 is r, and the character at index 7 is l. Both are not the same characters.

Solution Approach

To solve the problem, we will simply check for the equivalence of the elements at index a and b. If any index is greater than the length of string, be will find the value of (index%len), to get the character’s index. And the user the new index for comparison.

Example

 Live Demo

#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;
}

Output

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
raja
Published on 27-Jul-2020 12:13:03
Advertisements