20 días de estudio en equipo | Tencent destacó 7.8.9 preguntas

007 inversión de enteros

Descripción del Título

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231,  231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

Método de resolución de problemas

Convierta un número entero en una cadena y luego genere en orden inverso, la complejidad es n
Inserte la descripción de la imagen aquí

código python

class Solution:
    def reverse(self, x):
        if -2**31 <= x <= 2**31-1:
            if x >= 0:
                y = int(str(x)[::-1])
            else:
                y = -int(str(x)[::-1].replace("-", ""))
            if -2**31 <= y <= 2**31-1:
                return y
            else:
                y = 0
        else:
            y = 0
        return y

008 entero de conversión de cadena

Descripción del Título

实现 atoi 函数将一个字符串类型转换为整型。
注意事项:
该函数首先要剔除字符串前后的空白字符,从第一个非空白字符开始,并且第一个字符可能是'+''-';
该字符串中间可能包含非数字字符串,则忽略掉此字符及其后续字符,并不影响函数的转换;
如果字符串首个非空白字符不是有效的数字或'+''-',则转换失败;
如果字符串转换失败,则返回0,如果转换的数字越界,则返回为INT_MAX(2147483647)或者INT_MIN(-2147483648)。
例如:
不规则输入,但是有效的转换:
"-3924x8fc" ------>  -3924
  "+413" ------> 413

无效格式转换:
      "++c" ------> 0(转换失败)
      "++1" ------> 0(转换失败)

转换的结果溢出:
"2147483648" ------> INT_MAX(2147483647)
"-2147483649" ------> INT_MIN(-2147483648)  

Método de resolución de problemas

En esta pregunta, recorremos cada cadena por turno y procedemos de la siguiente manera:
1. Eliminamos los caracteres en blanco delante de la cadena hasta el primer carácter que no está en blanco;
2. Si el primer carácter que no está en blanco en la cadena es '+' o'- ', marque el número entero para convertirlo como un número positivo o negativo, de lo contrario es un número positivo;
3. Procese cada carácter numérico por turno y finalice la conversión cuando encuentre el final de la cadena o un número no numérico carácter;
4. Compare el número convertido actual con el signo Multiplicar y devuelva el resultado convertido.

código python

class Solution(object):
    def myAtoi(self, s):
        l = len(s)
        time_1 = 0
        time_2 = 0
        time_3 = 0
        S = ""
        sign = 1
        for i in range(l):
            # 剔除字符串前面空白字符,直到第一个非空白字符;
            if s[i] != " ":
                # 如果字符串第一个非空白字符是'+'或'-',则标记待转换整数为正数或负数,否则则为正数;
                if s[i] == "+":
                    sign = 1  # 用于判断正负号
                    time_1 += 1
                    time_2 += 1
                elif s[i] == "-":
                    sign = -1
                    time_1 += 1
                    time_2 += 1
                # 依次处理每一个数字字符,遇到字符串结尾或非数字字符则结束转换;
                elif ord("0") <= ord(s[i]) <= ord("9"):  # ord(c) 返回值是对应的十进制整数
                    S += s[i]  # 拼接字符串
                    time_2 += 1
                    time_3 += 1

                else:  # or ord("A") <= ord(s[i]) <= ord("z"):
                    if time_3 > 0:
                        return int(S) * sign
                if time_1 >= 2 or time_2 == 0:
                    return 0
                else:
                    continue
        print(int(S))
        if int(S) >= 2147483648:
            return 2147483648 * sign
        else:
            return int(S) * sign  # 将当前转换数字与符号相乘,返回转换后的结果。

A = Solution()
print(A.myAtoi("-2585625615"))

Se siente bien, pero sigo informando errores, así que guardémoslo para una revisión posterior
Inserte la descripción de la imagen aquí

009 palíndromo

Descripción del Título

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true

Método de resolución de problemas

Si es un número negativo, devuelve Falso directamente.
Si no es negativo, el número entero se invierte. Si sigue siendo igual al número original, devuelve Verdadero

Inserte la descripción de la imagen aquí

código python

class Solution:
    def isPalindrome(self, x):
        if x >=0:
            y = int(str(x)[::-1])
        else:
            return False
        if x == y:
            return True
        else:
            return False
s = Solution()
print(s.isPalindrome(-121))

Supongo que te gusta

Origin blog.csdn.net/weixin_42326479/article/details/112536226
Recomendado
Clasificación