链接: 392. 判断子序列

class Solution:
def isSubsequence(self, s: str, t: str) -> bool:
j = 0
n = len(t)
for c in s:
while j <n and t[j] != c:
j += 1
if j == n :
return False
j += 1
return True
链接: 541. 反转字符串 II

python真香。
class Solution:
def reverseStr(self, s: str, k: int) -> str:
n = len(s)
s = list(s)
for i in range(0,n,2*k):
s[i:min(n,i+k)] = reversed(s[i:min(n,i+k)])
return ''.join(s)
链接: 面试题 16.24. 数对和

class Solution:
def pairSums(self, nums: List[int], target: int) -> List[List[int]]:
nums.sort()
l,r = 0,len(nums)-1
ans = []
while l<r:
a = nums[l] + nums[r]
if a == target:
ans.append([nums[l],nums[r]])
l+=1
r-=1
elif a < target:
l+=1
else:
r-=1
return ans
链接: 696. 计数二进制子串

DP。有点像回文串dp。
class Solution:
def countBinarySubstrings(self, s: str) -> int:
n = len(s)
dp = [0] * n # 以i为终点的合法子串长度
for i in range(1,n):
if s[i] != s[i-1]:
dp[i] = 2
else:
l = i - dp[i-1] - 1
if l >= 0 and s[l] != s[i]:
dp[i] = dp[i-1] + 2
return sum(a>0 for a in dp)