【LeetCode】93.复原IP地址
LeetCode IP地址 93 复原
2023-09-14 09:13:24 时间
0.总结
- 本题实现起来还是有些麻烦的,建议20min
1. 题目
2. 分析
递归+细节实现。
主要就是找三个位置插入“.”号,在找点的时候,需要判断一下两个点得到的这个值是否合理(是否在[0,255]区间内,是否有前导0?)
3. 代码
class Solution:
def __init__(self):
self.res = []
def restoreIpAddresses(self, s: str) -> List[str]:
n = len(s)
# num=3 表示有3次机会;
# pos=0开始挑点
self.dfs(s,3,0,n,[])
return self.res
# 需要记录分割点,最后保存结果
def dfs(self,s,num,pos,n,arr):
if num: # 如果还有插入的机会
tmp = 0
for i in range(pos,n):
print(s[i])
tmp = tmp*10 + int(s[i])
if tmp>=0 and tmp <=255:
arr.append(i) # 在第i个字符后面分割开
self.dfs(s,num-1,i+1,n,arr)
arr.pop() # 删除这一个
else: # 说明没有机会了
if pos == n: # 如果到头儿了
return
# 判断是否合理,主要是pos~n 的值
tmp = 0
while(pos<n and tmp <= 255):
tmp = tmp*10 + int(s[pos])
pos+=1
if pos == n and tmp <= 255: # 需要找出所有结果
cur = []
# 不能有前导0
if (s[0:arr[0]+1].startswith("0") and len(s[0:arr[0]+1])>1
or (s[arr[0]+1:arr[1]+1].startswith("0") and len(s[arr[0]+1:arr[1]+1])>1)
or (s[arr[1]+1:arr[2]+1].startswith("0") and len(s[arr[1]+1:arr[2]+1])>1)
or (s[arr[2]+1:].startswith("0") and len(s[arr[2]+1:]) > 1)
):
return
cur.append(s[0:arr[0]+1])
cur.append(s[arr[0]+1:arr[1]+1])
cur.append(s[arr[1]+1:arr[2]+1])
cur.append(s[arr[2]+1:])
print(cur)
for i in arr: # 遍历所有的可能值
print(i,end= ",")
print("\n")
self.res.append(".".join(cur))
# self.res +=1
相关文章
- Java实现 LeetCode 606 根据二叉树创建字符串(遍历树)
- Java实现 LeetCode 563 二叉树的坡度(又是一个遍历树)
- Java实现 LeetCode 509 斐波那契数
- Java实现 LeetCode 413 等差数列划分
- Java实现 LeetCode 403 青蛙过河
- Java实现 LeetCode 345 反转字符串中的元音字母
- Java实现 LeetCode 336 回文对
- Java实现 LeetCode 324 摆动排序 II
- Java实现 LeetCode 268 缺失数字
- Java实现 LeetCode 93 复原IP地址
- Java实现 LeetCode 2 两数相加
- Java实现LeetCode_0035_SearchInsertPosition
- Java实现 Leetcode 169 求众数
- 每日一道 LeetCode (25):平衡二叉树
- (LeetCode 203)Remove Linked List Elements
- [LeetCode] Search a 2D Matrix II
- [LeetCode] Invert Binary Tree
- LeetCode(53):最大子序和
- LeetCode-764. 最大加号标志【动态规划,二维数组】
- [LeetCode] 22. 括号生成 ☆☆☆(回溯)
- LeetCode-Reverse Words in a String
- LeetCode总结 -- 高精度篇
- leetcode 447. Number of Boomerangs
- 【Leetcode刷题Python】300. 最长递增子序列