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]!='