zoukankan      html  css  js  c++  java
  • LeetCode

    1. 在流数据中,寻找第k大的数

    k = 3
    s1 = []
    while 1:
        num = int(input("Input your number: "))
        if num < 0:
            print("The 3th of numbers is ", s1[-1])
        if len(s1) < 3:
            s1.append(num)
        else:
            s1.append(num)
            s1.sort(reverse=True)
            s1 = s1[:3]
    # 复杂度 klog(k)
    # 方法二 小顶堆 复杂度 log(k)

    2.  判断是否是回文字符串

    2.1利用双指针判断,一个从左往右,另外一个从右往左,判断所在的字符是否相等

    2.2利用栈来存储数据,然后依次出栈,观察出栈的顺序是不是与入栈的顺序一样

    def isPalindrome(str1):
        if len(str1) == 0:
            return True
        left = 0
        right = len(str1) - 1
        while left < right:
            if not(str1[left].isalnum()):  # 除了字符(包括汉字)和数字以外,其他的不比较,跳过
                left += 1
            elif not(str1[right].isalnum()):
                right -= 1
            else:
                if str1[left] != str1[right]:
                    return False
                left += 1
                right -= 1
        return True
    
    
    str1 = "level"
    bool1 = isPalindrome(str1)
    print(bool1)  # true

    bool symmetry(ElemType str[]){
    int i;ElemType e; SqStack *st;
    InitStack(st);  //初始化栈
    for(i=0;str[i]!='';i++){  //将数组中的元素依次入栈
    Push(st,str[i]);
    }
    
    for(i=0;str[i]!='';i++){  // 将栈中的元素依次出栈,与入栈的顺序进行比较
    Pop(st,e);
    if(str[i]!=e){
    DestroyStack(st);
    return False;
    }
    }
    DestroyStack(st);
    return False;
    }

    3.判断回文数

    方法一:将整数转为字符串,利用上文的方法解决问题

    方法二:数学方法

    分别计算出整数的最高位和最低位的值进行比较,循环,依次进行判断

    def isPalindrome(num):
        if num < 0:
            return False
        div = 1
        while (num//div) >= 10:   # 计算出整数的位数
            div *= 10
        while num > 0:
            left = num//div   
            right = num % 10
            if left != right:
                return False
            num = (num % div)//10  # 去掉最右边和最左边的值
            div = div/100
        return True
    
    
    print(isPalindrome(1221))

     方法三 把整数对折后看两边的数是否相同

    def isPalindrome(x):
        if x<0 or (x and x%10==0):  # 当整数的最后一位是0时,返回false
            return False
        reverse_number = 0
        while x > reverse_number:
            reverse_number = reverse_number*10 + x%10
            x = x // 10
        return x==reverse_number or x==reverse_number//10   # 当整数位数不是偶数时,比较时去掉一位
    
    
    print(isPalindrome(12521))
  • 相关阅读:
    测量MySQL的表达式和函数的速度
    MySQL中的比较操作符<=>
    Python中的args和kwargs
    MySQL8新特性(2)--mysql的升级过程
    MySQL8新特性(1)--原子DDL
    PostgreSQL中的一些日志
    PostgreSQL的表空间
    [九]基础数据类型之Boolean详解
    [八]基础数据类型之Double详解
    [七]基础数据类型之Float详解
  • 原文地址:https://www.cnblogs.com/nxrs/p/10702881.html
Copyright © 2011-2022 走看看