Palindromic string

1312. Minimum Insertion Steps to Make a String Palindrome

# 双指针,一头一尾。如果left和right所指字符相同,那么left+1,right-1
# 如果不同,则表示需要插入字符了。有两种可能的插入方法:
# 在left-1处插入right所指向的字符,插入后,需要向左移动right指针,
# 在right+1处插入left所指向的字符,插入后,需要向右移动left指针

# dp[i][j]表示使区间[i,j]成为回文的最小插入次数
# s[i]==s[j],dp[i][j]=dp[i+1][j-1]
# s[i]==s[j],dp[i][j]=min(dp[i][j-1],dp[i+1][j])+1

 1 class Solution(object):
 2     def minInsertions(self, s):
 3         """
 4         :type s: str
 5         :rtype: int
 6         """
 7 
 8 
 9         n=len(s)
10         if(n==1):return 0
11 
12         dp=[[0 for j in range(n)] for i in range(n)]
13         
14         for j in range(1,n):
15             for i in range(j-1,-1,-1):
16                 if(s[i]==s[j]):
17                     dp[i][j]=dp[i+1][j-1]
18                 else:
19                     dp[i][j]=min(dp[i+1][j],dp[i][j-1])+1
20         
21         return dp[0][n-1]

1216. Valid Palindrome III

给出一个字符串 s 和一个整数 k,请你帮忙判断这个字符串是不是一个「K 回文」。

所谓「K 回文」:如果可以通过从字符串中删去最多 k 个字符将其转换为回文,那么这个字符串就是一个「K 回文」。

原文地址:https://www.cnblogs.com/zijidan/p/12536931.html