Python | C++ | Eliminar los ceros iniciales de una dirección IP

Dada una dirección IP, elimine los ceros iniciales de la dirección IP.

Ejemplos:  

Input : 100.020.003.400 
Output : 100.20.3.400

Input :001.200.001.004  
Output : 1.200.1.4

El enfoque es dividir la string dada por «.» y luego convertirlo en un número entero que elimine los ceros iniciales y luego volver a unirlos en una string. devuélvalos usando la función de unión.

Implementación:

C++

// Cpp program to remove leading zeros
// an IP address and print the IP
  
#include <bits/stdc++.h>
using namespace std;
  
// function to remove leading zeros
string removeZeros(string s)
{
    vector<string> v;
  
    // splits the ip by "."
    for (int i = 0; i < s.length(); i++) {
        string ans;
        while (i < s.length() && s[i] != '.') {
            ans += s[i];
            i++;
        }
        v.push_back(ans);
    }
  
    vector<int> num;
    // converts the words to integers to remove leading removeZeros
    for (auto str : v) {
        int temp = 0;
        for (int i = 0; i < str.length(); i++) {
            temp *= 10;
            temp += (str[i] - '0');
        }
        num.push_back(temp);
    }
  
    string ans = "";
    // Convert back the integer to string and join them back to a string
    for (auto i : num) {
        ans += '.';
        string temp;
        while (i) {
            temp += ('0' + (i % 10));
            i /= 10;
        }
        reverse(temp.begin(), temp.end());
        ans += temp;
    }
  
    return ans.substr(1);
}
  
int main()
{
    string ip;
    // example1
    ip = "100.020.003.400";
    cout << (removeZeros(ip)) << "\n";
    // example2
    ip = "001.200.001.004";
    cout << (removeZeros(ip)) << "\n";
    return 0;
}

Python

# Python program to remove leading zeros
# an IP address and print the IP
  
# function to remove leading zeros
def removeZeros(ip):
      
    # splits the ip by "."
    # converts the words to integers to remove leading removeZeros
    # convert back the integer to string and join them back to a string
    new_ip = ".".join([str(int(i)) for i in ip.split(".")])
    return new_ip ;
      
      
# driver code 
# example1
ip ="100.020.003.400"
print(removeZeros(ip))
  
  
# example2
ip ="001.200.001.004"
print(removeZeros(ip))
Producción

100.20.3.400
1.200.1.4
 

Método 2: expresión regular

Usando un grupo de captura, haga coincidir el último dígito y cópielo y evite que se reemplacen todos los dígitos. 
regex \d se puede explicar como: 

  • \d : coincide con cualquier dígito decimal
\d   Matches any decimal digit, this is equivalent
     to the set class [0-9].
  • \b le permite realizar una búsqueda de «solo palabras completas» utilizando una expresión regular en forma de \bword\b 
    regex \b puede explicarse como:
\b allows you to perform a "whole words only" search u
sing a regular expression in the form of \bword\b

Implementación:

Python

# Python program to remove leading zeros
# an IP address and print the IP using regex
import re
 
# function to remove leading zeros
def removeZeros(ip):
    new_ip = re.sub(r'\b0+(\d)', r'\1', ip)
    # splits the ip by "."
    # converts the words to integers to remove leading removeZeros
    # convert back the integer to string and join them back to a string
     
    return new_ip
     
     
# driver code
# example1
ip ="100.020.003.400"
print(removeZeros(ip))
 
 
# example2
ip ="001.200.001.004"
print(removeZeros(ip))
Producción

100.20.3.400
1.200.1.4

Método 3: almacenar el índice del primer carácter distinto de cero.

El enfoque es dividir la string por «.» y almacenarlo en otra string x.

Ahora obtenga el índice del primer carácter distinto de cero de esa string y almacene

en otra variable ind. Inicialice esa variable a -1, lo que indica que hay

ningún carácter distinto de cero en la string. En otra variable, agregue la substring seleccionando

subir caracteres desde ese índice hasta el final en otra string y.

Código fuente: solución c++

C++

#include<bits/stdc++.h>
using namespace std;
int main()
{
   string s="152.02.0015.00";
   string newIPAdd(string);
   cout<<newIPAdd(s);
   return 0;
}
string newIPAdd (string s)
   {
       long long int i,l,f=0,ind=-1;// initialising ind to -1 to indicate that there is no non-zero character in the string
       string x="",y="";
       char c;
       s=s+".";
       l=s.length();
       for(i=0;i<l;i++)
       {
           c=s.at(i);
           if(c!='.')
           {
               x=x+c;
               if(c!='0' && f==0)
               {
                   ind=x.length()-1;// getting the index of first non-zero character
                   f=1;//flag=1 to prevent further change of index for another non-zero character
               }
 
           }
           else
           {
                 
               if(ind==-1)
               y=y+"."+"0";
               else
               y=y+"."+x.substr(ind);//appending it to the another string
               ind=-1;f=0;x="";
           }
       }
       return y.substr(1);
   }
Producción

152.2.15.0

Publicación traducida automáticamente

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