前面几道题目比较简单,故这里将部分题目写在一个blog下
T1:实现 strStr() 函数。 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。
解题思路:
嗯…这题有啥解题思路啊…直接调用python中index方法,可返回字符或字符串在另一字符串中第一次出现的位置,使用if 判断needle是否在haystack中,若不在就返回-1(其实用try也没啥问题)
# 使用if判断
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
if needle in haystack:
return haystack.index(needle)
else:
return -1
#使用try判断,防止报错
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
try:
return haystack.index(needle)
except:
return -1
运行结果
T2 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中最后一个单词的长度。
单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
思路:
用split方法将字符分割为纯字符串以及空,找到最后一个非空的字符串,返回其长度
class Solution:
def lengthOfLastWord(self, s: str) -> int:
s = s.split(' ')
i = len(s)-1
while s[i] == "":
i -= 1
return len(s[i])
运行结果
T3 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
思路:若为简单的求回文数的问题,python中只需要求s[::-1] 是否等于s即可,但本题中我们要求的是带有特殊字符的s,且特殊字符不在统计范围内,故需要将特殊字符从s中移除,或可将s中非特殊字符转移到其他变量中。
class Solution:
def isPalindrome(self, s: str) -> bool:
#法一,将s中的字符转移到新变量ls中
ls = []
s = s.lower()
test = "abcdefghijklmnopqrstuvwxyz0123456789"
for i in range(len(s)):
if s[i] in test:
ls.append(s[i])
return ls==ls[::-1]
class Solution:
def isPalindrome(self, s: str) -> bool:
#法二,将测试集中带有的特殊字符从s中删去
s = s.lower()
ls = ' <>?:"@#$%^&*()_+/\'\*-+.[]{},!;|`'
for i in ls:
s = s.replace(i,'')
return s==s[::-1]
运行结果:
T4 给你一个 m x n 的矩阵 matrix 。如果这个矩阵是托普利茨矩阵,返回 true ;否则,返回 false 。
如果矩阵上每一条由左上到右下的对角线上的元素都相同,那么这个矩阵是 托普利茨矩阵
思路:
遍历矩阵,所有元素左上等于右下即可
class Solution:
def isToeplitzMatrix(self, matrix: List[List[int]]) -> bool:
for i in range(len(matrix)-1):
for j in range(len(matrix[0])-1):
if matrix[i][j] != matrix[i+1][j+1]:
return False
return True
结果: