Leetcode93.Restore

xiaoxiao2025-10-16  3

IP地址格式:X.X.X.X(0<=X<=255),例如172.10.255.0 主要需注意的几个点:对‘0’的处理,不能出现001,010等0为首位的情况(但0可以单独存在(X.0.X.X是合法的));注意三位数的大小不能超过255,超过即为非法。 时间复杂度:O(N) C++代码:

class Solution { public: vector<string> result; vector<string> restoreIpAddresses(string &s) { addDot(s, 4, 0); return result; } void addDot(string &s, int count, int pos) { if (s.length() - pos > 3 * count)//剪枝,当点的个数加一少于数字的三分之一时便不可能 return; //出现合法情况(比如后面还有7个数但只剩1个点就不可能 else //出现合法分割) { int num = 0; for (int i = 1; i <= 3; i++) { if (pos + i > s.length()) break; num *= 10; num += s[pos + i - 1] - '0'; if (num > 255) return; if (count != 1) { if (pos + i == s.length()) break; s.insert(s.begin() + pos + i, '.'); addDot(s, count - 1, pos + i + 1); s.erase(s.begin() + pos + i); if (i == 1 && s[pos] == '0') return; } if (i == 1 && s[pos] == '0'&&pos != s.length() - 1) return; } if (count == 1) result.push_back(s); } } };
转载请注明原文地址: https://www.6miu.com/read-5038027.html

最新回复(0)