Encuentre la identificación única y el nombre de dominio de un sitio web a partir de una string

Dada una string S de tamaño N que consiste en una identificación única y un nombre de dominio de un sitio web único, la tarea es encontrar la identificación y el nombre de dominio en la string dada si la identificación tiene la forma [char, char, char, char, carácter, dígito, dígito, dígito, dígito, carácter] .

Ejemplos:

Entrada: S = “Agradecemos a ABCDE1234F por visitarnos y comprar productos del artículo AMZrr@!k. Para obtener más ofertas, visítenos en www.amazon.com”
Salida:
ID =ABCDE1234F
Dominio = amazon.com

Entrada: S = “Hola PQRST5678D, fue un placer recibirlo. Consulte www.oyo.com, nuestro sitio web oficial para futuras estancias”
Salida:
ID =PQRST5678D
Dominio = oyo.com

Enfoque: el enfoque más simple para resolver el problema dado es dividir la string en palabras y encontrar si la string dividida es ID o Domain . Siga los pasos a continuación para resolver el problema:

  • Primero divida las palabras de la string separadas por espacios y guárdelas en un vector de string , digamos palabras[] .
  • Inicialice dos strings vacías, digamos ID y Dominio para almacenar el ID y el Nombre de Dominio resultantes .
  • Atraviese el vector de palabras de string [] y realice los siguientes pasos:
    • Inicialice una variable, diga marcar como falso para almacenar si la string actual cumple con el formato de ID o no.
    • Si la longitud de la string actual es 10 y si los primeros 5 caracteres y el último carácter no son alfabéticos o cualquiera de los caracteres restantes de la string no es numérico, marque el indicador como verdadero .
    • Si el valor de la bandera es falso , entonces asigne la string actual a ID .
    • Si la primera substring de la string actual, digamos SS sobre el rango [0, 2] es » www » y la substring sobre el rango [SS.longitud() – 3, SS.longitud() – 1] es “ com ”, entonces asigne el nombre de dominio, es decir, una substring sobre el rango [3, SS.length() – 1] a Domain .
  • Después de completar los pasos anteriores, imprima el valor de ID y Dominio como resultado.

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if a character is
// alphabet or not
bool ischar(char x)
{
    if ((x >= 'A' && x <= 'Z')
        || (x >= 'a' && x <= 'z')) {
        return 1;
    }
 
    return 0;
}
 
// Function to check if a character is
// a numeric or not
bool isnum(char x)
{
    if (x >= '0' && x <= '9')
        return 1;
    return 0;
}
 
// Function to find ID and Domain
// name from a given string
void findIdandDomain(string S, int N)
{
    // Stores ID and the domain names
    string ID, Domain;
 
    // Stores the words of string S
    vector<string> words;
 
    // Stores the temporary word
    string curr = "";
 
    // Traverse the string S
    for (int i = 0; i < N; i++) {
 
        // If the current character
        // is space
        if (S[i] == ' ') {
 
            // Push the curr in words
            words.push_back(curr);
 
            // Update the curr
            curr = "";
        }
 
        // Otherwise
        else {
            if (S[i] == '.') {
 
                if (i + 1 == N
                    || (i + 1 < N
                        && S[i + 1] == ' '))
                    continue;
            }
            curr += S[i];
        }
    }
 
    // If curr is not empty
    if (curr.length())
        words.push_back(curr);
 
    for (string ss : words) {
 
        // If length of ss is 10
        if (ss.size() == 10) {
            bool flag = 0;
 
            // Traverse the string ss
            for (int j = 0; j <= 9; j++) {
 
                // If j is in the range
                // [5, 9)
                if (j >= 5 && j < 9) {
 
                    // If current character
                    // is not numeric
                    if (isnum(ss[j]) == 0)
 
                        // Mark flag 1
                        flag = 1;
                }
 
                // Otherwise
                else {
 
                    // If current character
                    // is not alphabet
                    if (ischar(ss[j]) == 0)
 
                        // Mark flag 1
                        flag = 1;
                }
            }
 
            // If flag is false
            if (!flag) {
 
                // Assign ss to ID
                ID = ss;
            }
        }
 
        // If substring formed by the
        // first 3 character is "www"
        // and last 3 character is "moc"
        if (ss.substr(0, 3) == "www"
            && ss.substr(
                   ss.length() - 3, 3)
                   == "com") {
 
            // Update the domain name
            Domain = ss.substr(
                4, ss.size() - 4);
        }
    }
 
    // Print ID and Domain
    cout << "ID = " << ID
         << endl;
    cout << "Domain = " << Domain;
}
 
// Driver Code
int main()
{
    string S = "We thank ABCDE1234F for visiting "
               "us and buying "
               "products item AMZrr@!k. For more "
               "offers, visit "
               "us at www.amazon.com";
    int N = S.length();
    findIdandDomain(S, N);
 
    return 0;
}

Java

// Java program for the above approach
import java.util.*;
 
class GFG{
 
// Function to check if a character is
// alphabet or not
static boolean ischar(char x)
{
    if ((x >= 'A' && x <= 'Z') ||
        (x >= 'a' && x <= 'z'))
    {
        return true;
    }
    return false;
}
 
// Function to check if a character is
// a numeric or not
static boolean isnum(char x)
{
    if (x >= '0' && x <= '9')
        return true;
         
    return false;
}
 
// Function to find ID and Domain
// name from a given String
static void findIdandDomain(String S, int N)
{
     
    // Stores ID and the domain names
    String ID = "", Domain = "";
 
    // Stores the words of String S
    Vector<String> words = new Vector<String>();
 
    // Stores the temporary word
    String curr = "";
 
    // Traverse the String S
    for(int i = 0; i < N; i++)
    {
         
        // If the current character
        // is space
        if (S.charAt(i) == ' ')
        {
             
            // Push the curr in words
            words.add(curr);
 
            // Update the curr
            curr = "";
        }
 
        // Otherwise
        else
        {
            if (S.charAt(i) == '.')
            {
                 
                if (i + 1 == N || (i + 1 < N &&
                    S.charAt(i + 1) == ' '))
                    continue;
            }
            curr += S.charAt(i);
        }
    }
 
    // If curr is not empty
    if (curr.length() > 0)
        words.add(curr);
 
    for(String ss : words)
    {
         
        // If length of ss is 10
        if (ss.length() == 10)
        {
            boolean flag = false;
 
            // Traverse the String ss
            for(int j = 0; j <= 9; j++)
            {
 
                // If j is in the range
                // [5, 9)
                if (j >= 5 && j < 9)
                {
 
                    // If current character
                    // is not numeric
                    if (isnum(ss.charAt(j)) == false)
 
                        // Mark flag 1
                        flag = true;
                }
 
                // Otherwise
                else
                {
                     
                    // If current character
                    // is not alphabet
                    if (ischar(ss.charAt(j)) == false)
 
                        // Mark flag 1
                        flag = true;
                }
            }
 
            // If flag is false
            if (!flag)
            {
                 
                // Assign ss to ID
                ID = ss;
            }
        }
 
        // If subString formed by the
        // first 3 character is "www"
        // and last 3 character is "moc"
        if (ss.length() > 2 && ss.substring(0, 3).equals("www") &&
            ss.substring(ss.length() - 3).equals("com"))
        {
 
            // Update the domain name
            Domain = ss.substring(4, ss.length());
        }
    }
 
    // Print ID and Domain
    System.out.print("ID = " +  ID + "\n");
    System.out.print("Domain = " +  Domain);
}
 
// Driver Code
public static void main(String[] args)
{
    String S = "We thank ABCDE1234F for visiting " +
               "us and buying products item AMZrr@!k. " +
               "For more offers, visit us at www.amazon.com";
    int N = S.length();
     
    findIdandDomain(S, N);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program for the above approach
 
# Function to check if a character is
# alphabet or not
def ischar(x):
     
    if ((x >= 'A' and x <= 'Z') or
        (x >= 'a' and x <= 'z')):
        return 1
         
    return 0
 
# Function to check if a character is
# a numeric or not
def isnum(x):
     
    if (x >= '0' and x <= '9'):
        return 1
         
    return 0
 
# Function to find ID and Domain
# name from a given
def findIdandDomain(S, N):
     
    # Stores ID and the domain names
    ID, Domain = "", ""
 
    # Stores the words of  S
    words = []
 
    # Stores the temporary word
    curr = ""
 
    # Traverse the  S
    for i in range(N):
         
        # If the current character
        # is space
        if (S[i] == ' '):
             
            # Push the curr in words
            words.append(curr)
             
            # Update the curr
            curr = ""
             
        # Otherwise
        else:
            if (S[i] == '.'):
                if (i + 1 == N or (i + 1 < N and
                  S[i + 1] == ' ')):
                    continue
                 
            curr += S[i]
 
    # If curr is not empty
    if (len(curr)):
        words.append(curr)
 
    for ss in words:
 
        # If length of ss is 10
        if (len(ss) == 10):
            flag = 0
             
            # Traverse the  ss
            for j in range(10):
 
                # If j is in the range
                # [5, 9)
                if (j >= 5 and j < 9):
                     
                    # If current character
                    # is not numeric
                    if (isnum(ss[j]) == 0):
                         
                        # Mark flag 1
                        flag = 1
                         
                # Otherwise
                else:
                     
                    # If current character
                    # is not alphabet
                    if (ischar(ss[j]) == 0):
                         
                        # Mark flag 1
                        flag = 1
 
            # If flag is false
            if (not flag):
                 
                # Assign ss to ID
                ID = ss
 
        # If sub formed by the
        # first 3 character is "www"
        # and last 3 character is "moc"
        if (ss[0: 3] == "www" and ss[len(ss) - 3: ]== "com"):
             
            # Update the domain name
            Domain = ss[4: len(ss) ]
 
    # Print ID and Domain
    print("ID =", ID)
    print("Domain =", Domain)
 
# Driver Code
if __name__ == '__main__':
     
    S = "We thank ABCDE1234F for visiting us "\
        "and buying products item AMZrr@!k. "\
        "For more offers, visit us at www.amazon.com"
    N = len(S)
     
    findIdandDomain(S, N)
 
# This code is contributed by mohit kumar 29

C#

// C# program for the above approach
using System;
using System.Collections.Generic;
 
public class GFG
{
 
// Function to check if a character is
// alphabet or not
static bool ischar(char x)
{
    if ((x >= 'A' && x <= 'Z') ||
        (x >= 'a' && x <= 'z'))
    {
        return true;
    }
    return false;
}
 
// Function to check if a character is
// a numeric or not
static bool isnum(char x)
{
    if (x >= '0' && x <= '9')
        return true;
         
    return false;
}
 
// Function to find ID and Domain
// name from a given String
static void findIdandDoMain(String S, int N)
{
     
    // Stores ID and the domain names
    String ID = "", Domain = "";
 
    // Stores the words of String S
    List<String> words = new List<String>();
 
    // Stores the temporary word
    String curr = "";
 
    // Traverse the String S
    for(int i = 0; i < N; i++)
    {
         
        // If the current character
        // is space
        if (S[i] == ' ')
        {
             
            // Push the curr in words
            words.Add(curr);
 
            // Update the curr
            curr = "";
        }
 
        // Otherwise
        else
        {
            if (S[i] == '.')
            {
                 
                if (i + 1 == N || (i + 1 < N &&
                    S[i + 1] == ' '))
                    continue;
            }
            curr += S[i];
        }
    }
 
    // If curr is not empty
    if (curr.Length > 0)
        words.Add(curr);
 
    foreach(String ss in words)
    {
         
        // If length of ss is 10
        if (ss.Length == 10)
        {
            bool flag = false;
 
            // Traverse the String ss
            for(int j = 0; j <= 9; j++)
            {
 
                // If j is in the range
                // [5, 9)
                if (j >= 5 && j < 9)
                {
 
                    // If current character
                    // is not numeric
                    if (isnum(ss[j]) == false)
 
                        // Mark flag 1
                        flag = true;
                }
 
                // Otherwise
                else
                {
                     
                    // If current character
                    // is not alphabet
                    if (ischar(ss[j]) == false)
 
                        // Mark flag 1
                        flag = true;
                }
            }
 
            // If flag is false
            if (!flag)
            {
                 
                // Assign ss to ID
                ID = ss;
            }
        }
 
        // If subString formed by the
        // first 3 character is "www"
        // and last 3 character is "moc"
        if (ss.Length > 2 && ss.Substring(0, 3).Equals("www") &&
            ss.Substring(ss.Length - 3).Equals("com"))
        {
 
            // Update the domain name
            Domain = ss.Substring(4, ss.Length-4);
        }
    }
 
    // Print ID and Domain
    Console.Write("ID = " +  ID + "\n");
    Console.Write("Domain = " +  Domain);
}
 
// Driver Code
public static void Main(String[] args)
{
    String S = "We thank ABCDE1234F for visiting " +
               "us and buying products item AMZrr@!k. " +
               "For more offers, visit us at www.amazon.com";
    int N = S.Length;
     
    findIdandDoMain(S, N);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
 
// JavaScript program for the above approach
 
// Function to check if a character is
// alphabet or not
function ischar(x)
{
    if ((x >= 'A' && x <= 'Z') ||
        (x >= 'a' && x <= 'z'))
    {
        return true;
    }
    return false;
}
 
// Function to check if a character is
// a numeric or not
function isnum(x)
{
    if (x >= '0' && x <= '9')
        return true;
         
    return false;
}
 
// Function to find ID and Domain
// name from a given string
function findIdandDomain(S, N)
{
     
    // Stores ID and the domain names
    let ID, Domain;
 
    // Stores the words of string S
    let words = [];
 
    // Stores the temporary word
    let curr = "";
 
    // Traverse the string S
    for(let i = 0; i < N; i++)
    {
         
        // If the current character
        // is space
        if (S[i] == ' ')
        {
 
            // Push the curr in words
            words.push(curr);
 
            // Update the curr
            curr = "";
        }
 
        // Otherwise
        else
        {
            if (S[i] == '.')
            {
                 
                if (i + 1 == N ||
                   (i + 1 < N && S[i + 1] == ' '))
                    continue;
            }
            curr += S[i];
        }
    }
 
    // If curr is not empty
    if (curr.length >= 1)
        words.push(curr);
 
    for(let i = 0; i < words.length; i++)
    {
     
        // If length of ss is 10
        if (words[i].length == 10)
        {
            let flag = 0;
 
            // Traverse the string ss
            for(let j = 0; j <= 9; j++)
            {
 
                // If j is in the range
                // [5, 9)
                if (j >= 5 && j < 9)
                {
 
                    // If current character
                    // is not numeric
                    if (isnum(words[i][j]) == 0)
 
                        // Mark flag 1
                        flag = 1;
                }
 
                // Otherwise
                else
                {
                     
                    // If current character
                    // is not alphabet
                    if (ischar(words[i][j]) == 0)
 
                        // Mark flag 1
                        flag = 1;
                }
            }
 
            // If flag is false
            if (!flag)
            {
 
                // Assign ss to ID
                ID = words[i];
            }
        }
 
        // If substring formed by the
        // first 3 character is "www"
        // and last 3 character is "moc"
         
        if (words[i].substring(0, 3) == "www" &&
            words[i].substring(
                words[i].length - 3) == "com")
        {
 
            // Update the domain name
            Domain = words[i].substring(4);
        }
    }
 
    // Print ID and Domain
    document.write("ID = " + ID + "<br>");
 
    document.write("Domain = " + Domain);
}
 
// Driver Code
let S = "We thank ABCDE1234F for visiting " +
        "us and buying products item AMZrr@!k. " +
        "For more offers, visit us at www.amazon.com";
let N = S.length;
findIdandDomain(S, N);
 
// This code is contributed by Dharanendra L V.
 
</script>
Producción: 

ID = ABCDE1234F
Domain = amazon.com

 

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

Publicación traducida automáticamente

Artículo escrito por sarthakpal5101 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 *