[24] Pressione e segure para inserir | invalidação de endereço IP (LeetCode 925 | 1108)

Pressione e segure para entrar

Descrição do Problema

Seu amigo está usando o teclado para inserir o nome dele. Ocasionalmente, ao digitar o caractere c, a tecla pode ser pressionada por muito tempo e o caractere pode ser inserido uma ou mais vezes.

Você verificará os caracteres digitados no teclado. Se corresponder ao nome do seu amigo (alguns caracteres podem ser pressionados por muito tempo), retorna True.

exemplo:
Insira a descrição da imagem aqui

Ideias para resolução de problemas

Use dois ponteiros para apontar para os caracteres do nome e digitados respectivamente. Se os caracteres apontados forem iguais, ambos os ponteiros irão avançar em 1. Se o caractere atualmente apontado por digitado for igual ao caractere anterior do nome, significa que pressionado por muito tempo. O ponteiro é +1, caso contrário, retorna falso.

class Solution {
    
    
public:
    bool isLongPressedName(string name, string typed) {
    
    
        int n=name.size(),m=typed.size();
        if(name[0]!=typed[0] || name[n-1]!=typed[m-1])//提前判断一下开头和结尾
            return false;
        int i=1,j=1;
        while(i<n){
    
    
            if(name[i]==typed[j]){
    
    
                i++;
                j++;
            }
            if(name[i]!=typed[j]){
    
    
                if(typed[j]==name[i-1])
                    j++;
                else
                    return false;
            }
            if(j>m-1 && i<n) return false; //若typed已经到结尾了,但name还没到结尾,也返回false
        }
        return true;
    }
};

Complexidade de tempo: O (m)
Complexidade do espaço: O (1)

Invalidação de endereço IP

Descrição do Problema

Fornece um endereço de endereço IPv4 válido e retorna a versão invalidada desse endereço IP.

A chamada invalidação de endereços IP está, na verdade, substituindo cada "." Por "[.]".

Ideias para resolução de problemas

Uma string adicional res é usada para armazenar o resultado. No loop, se não for ".", O caractere é adicionado diretamente a res, se for ".", [.] É adicionado a res. Finalmente, volte para res.

class Solution {
    
    
public:
    string defangIPaddr(string address) {
    
    
        int n=address.size();
        string res="";
        for(int i=0;i<n;i++){
    
    
            if(address[i]=='.')
                res=res+"[.]";
            else
                res=res+address[i];
        }
        return res;
    }
};

Complexidade de tempo: O (n)
Complexidade do espaço: O (n)

Acho que você gosta

Origin blog.csdn.net/qq_43424037/article/details/113245336
Recomendado
Clasificación