Consultas de caracteres en una string repetida

Dada una string, X . Forme una string S repitiendo la string X varias veces, es decir, agregando la string X varias veces consigo misma. Hay consultas Q de las formas i y j. La tarea es imprimir «Sí» si el elemento en el índice i es el mismo que el elemento en el índice j en S, de lo contrario, imprimir «No» para cada consulta.

Ejemplos: 

Input : X = "geeksforgeeks", Q = 3.
Query 1: 0 8
Query 2: 8 13
Query 3: 6 15

Output :
Yes
Yes
No

String S will be "geeksforgeeksgeeksforgeeks....".
For Query 1, index 0 and index 8 have same element i.e 'g'.
For Query 2, index 8 and index 13 have same element i.e 'g'.
For Query 3, index 6 = 'o' and index 15 = 'e' which are not same.

Sea n la longitud de la string X. Observe que los elementos en los índices 0, n, 2n, 3n,…. son lo mismo. De manera similar para el índice i, la posición i, n+i, 2n+i, 3n+i,….. contienen el mismo elemento. 
Entonces, para cada consulta, encuentre (i%n) y (j%n), y si ambos son iguales para la string X.

A continuación se muestra la implementación de la idea anterior:

C++

// Queries for same characters in a repeated
// string
#include <bits/stdc++.h>
using namespace std;
 
// Print whether index i and j have same
// element or not.
void query(char s[], int i, int j)
{
    int n = strlen(s);
 
    // Finding relative position of index i,j.
    i %= n;
    j %= n;
 
    // Checking is element are same at index i, j.
    (s[i] == s[j]) ? (cout << "Yes" << endl)
                   : (cout << "No" << endl);
}
 
// Driven Program
int main()
{
    char X[] = "geeksforgeeks";
 
    query(X, 0, 8);
    query(X, 8, 13);
    query(X, 6, 15);
 
    return 0;
}

Java

// Java Program to Queries for
// same characters in a
// repeated string
import java.io.*;
 
public class GFG{
     
// Print whether index i and j
// have same element or not
static void query(String s, int i,
                  int j)
{
    int n = s.length();
 
    // Finding relative position
    // of index i,j
    i %= n;
    j %= n;
 
    // Checking is element are same
    // at index i, j
    if(s.charAt(i) == s.charAt(j))
    System.out.println("Yes");
    else
    System.out.println("No");
}
 
    // Driver Code
    static public void main (String[] args)
    {
    String X = "geeksforgeeks";
 
    query(X, 0, 8);
    query(X, 8, 13);
    query(X, 6, 15);
 
    }
}
 
// This code is contributed by vt_m.

Python3

# Queries for same characters in a repeated
# string
 
# Print whether index i and j have same
# element or not.
def query(s, i, j):
    n = len(s)
 
    # Finding relative position of index i,j.
    i %= n
    j %= n
 
    # Checking is element are same at index i, j.
    print("Yes") if s[i] == s[j] else print("No")
 
# Driver code
if __name__ == "__main__":
    X = "geeksforgeeks"
    query(X, 0, 8)
    query(X, 8, 13)
    query(X, 6, 15)
 
# This code is contributed by
# sanjeev2552

C#

// C# Program to Queries for
// same characters in a
// repeated string
using System;
 
public class GFG{
     
// Print whether index i and j
// have same element or not
static void query(string s, int i,
                  int j)
{
    int n = s.Length;
 
    // Finding relative position
    // of index i,j.
    i %= n;
    j %= n;
 
    // Checking is element are
    // same at index i, j
    if(s[i] == s[j])
    Console.WriteLine("Yes");
    else
    Console.WriteLine("No");
}
 
    // Driver Code
    static public void Main ()
    {
    string X = "geeksforgeeks";
 
    query(X, 0, 8);
    query(X, 8, 13);
    query(X, 6, 15);
 
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// Queries for same characters
// in a repeated string
 
// Print whether index i and j
// have same element or not.
function query($s, $i, $j)
{
    $n = strlen($s);
 
    // Finding relative position
    // of index i,j.
    $i %= $n;
    $j %= $n;
 
    // Checking is element are
    // same at index i, j.
    if(($s[$i] == $s[$j]))
        echo "Yes\n" ;
    else
        echo "No" ;
}
 
// Driver Code
$X = "geeksforgeeks";
 
query($X, 0, 8);
query($X, 8, 13);
query($X, 6, 15);
 
// This code is contributed by nitin mittal.
?>

Javascript

<script>
    // Javascript Program to Queries for
    // same characters in a
    // repeated string
     
    // Print whether index i and j
    // have same element or not
    function query(s, i, j)
    {
        let n = s.length;
 
        // Finding relative position
        // of index i,j.
        i %= n;
        j %= n;
 
        // Checking is element are
        // same at index i, j
        if(s[i] == s[j])
            document.write("Yes" + "</br>");
        else
            document.write("No" + "</br>");
    }
     
    let X = "geeksforgeeks";
   
    query(X, 0, 8);
    query(X, 8, 13);
    query(X, 6, 15);
     
</script>
Producción

Yes
Yes
No

Complejidad temporal: O(1)
Espacio auxiliar: O(1 )

Este artículo es una contribución de Anuj Chauhan . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *