LeetCode # 2

7. Integer reverso

Dado um inteiro de 32-bit, os dígitos de um número inteiro reversa.

Exemplo 1:
Entrada: 123
de saída: 321

Exemplo 2:
Entrada: -123
saída: -321

Exemplo 3:
entrada 120
de saída: 21

Exemplo 4:
Entrada: 1534236469
Saída: 0

Nota:
Suponha que estamos lidando com um ambiente que só pode armazenar números inteiros dentro do intervalo inteiro assinado de 32 bits: [-2 ^ 31, 2 ^ 31-1]. Para efeitos deste problema, suponha que a função retorna 0 quando o número inteiro invertida transborda.

//Solution
//总结:%就可以得到余数,得到的余数也可为负数;注意Note中的范围判断
int reverse(int x){
    long long t = x,t1 = 0;
    while (t)
    {
        t1 = 10 * t1 + (t%10);
        t= t/10;
    }
    if(t1 <INT_MIN ||t1>INT_MAX) return 0;
    return t1;
}
9. Número Palindrome

Determinar se um inteiro é um palindroma. Um inteiro é um palíndromo quando se lê o mesmo para trás como para a frente.

Exemplo 1:
Entrada: 121
de saída: verdadeiro

Exemplo 2:
Entrada: -123
saída: false
Explicação: Da esquerda para a direita, ele lê -121. Da direita para a esquerda, torna-se 121-. Portanto, não é um palíndromo.

Exemplo 3:
Entrada: 10
de saída: false
Explicação: Lê 01 da direita para a esquerda. Portanto, não é um palíndromo.

//Solution
//总结:最中间的数字不重要,所以只要求两边的数字相等即可。
bool isPalindrome(int x){
    if(x<0 || (x%10==0 && x!=0)) return false;
    int backnum = 0;
    int temp;
    while (x > backnum)
    {
        backnum = backnum *10 +x%10;
        x /=10;
    }
    return (x==backnum||x==backnum/10);
}

Acompanhamento:
Coud você resolvê-lo sem converter o inteiro para uma string?

//Solution
//总结:将int转化为字符串,再通过两端进行比对。
class Solution {
    public boolean isPalindrome(int x) {
        String str = String.valueOf(x);
        int start = 0;
        int end = str.length()-1;
        while(start <end )
        {
            if(str.charAt(start++) != str.charAt(end--) ) return false;
        }
        return true;
    }
}
13. Roman para Integer

Algarismos romanos são representadas por símbolos de sete diferentes: I, V, X, L, C, D e M.
Símbolo Valor
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
Por exemplo, dois é escrito como II em numeral romano , apenas dois one somados. Doze é escrito como, XII, o qual é simplesmente X + II. O número vinte e sete é escrito como XXVII, que é XX + V + II.

Algarismos romanos são escritos geralmente maior para a menor, da esquerda para a direita. No entanto, o numeral de quatro não é IIII. Em vez disso, o número quatro é escrito como IV. Porque a um é antes de os cinco que subtrai-lo a fazer quatro. O mesmo princípio se aplica ao número nove, que é escrito como IX. Existem seis casos em que é utilizado subtração:
I podem ser colocados antes de V (5) e X (10) para fazer 4 e 9.
X pode ser colocada antes de L (50) e C (100) para fazer 40 e 90.
C pode ser colocada antes de D (500) e M (1000) para fazer 400 e 900.

Dado um numeral romano, convertê-lo para um número inteiro. A entrada é garantida para estar dentro do intervalo de 1 a 3999.

Exemplo 1:
Entrada: “III”
de saída: 3

Exemplo 2:
entrada: “IV”
de saída: 4

Exemplo 3:
entrada: “IX”
de saída: 9

Exemplo 4:
Entrada: “LVIII”
de saída: 58
Explicação: L = 50, V = 5, III = 3.

Exemplo 5:
Entrada: “MCMXCIV”
Saída: 1994
Explicação: M = 1000, CM = 900, XC = 90 e IV = 4.

//Solution
//总结:罗马数字转换成整数的规则如下:如果前一个数的值小于后一个数的值
//那么这个数为后者减去前者。如果前者大于后者,那么就是简单地相加即可。
int valueofnum(char s)
{
    int sum;

    if(s == 'I') sum =1;
    if(s == 'V') sum =5;
    if(s == 'X') sum =10;
    if(s == 'L') sum =50;
    if(s == 'C') sum =100;
    if(s == 'D') sum =500;
    if(s == 'M') sum =1000;
    
    return sum;
}
int romanToInt(char * s){
    int length = strlen(s);
    int i ;
    int sum = 0;
    int t1,t2;
    for(i = 0 ; i< length -1;i++)//判断到倒数第二个
    {
        t1 = valueofnum(s[i]);
        t2 = valueofnum(s[i+1]);
        if(t1<t2) sum = sum + t2 -t1,i++;
        else sum = sum +t1;
    
    }
    if(i==length-1)sum = sum+valueofnum(s[i]); 
    //如果此时i已经到length说明循环中t1<t2已经执行过,已经搜索完了就
    return sum;
}
Publicado 42 artigos originais · ganhou elogios 5 · Vistas 2676

Acho que você gosta

Origin blog.csdn.net/weixin_44198992/article/details/105261923
Recomendado
Clasificación