アイデア:DFS、バックトレース、わずか3桁IP、最初のビットが0ビット0,3 255とすることができない場合に、2,3が試されている2ビット
クラスソリューション{ ベクトル < ストリング > m_res。 ベクトル < 文字列 > m_str。 公共: 無効 DFS(int型 DEP、文字列S) { // printVector(m_str)。 もし(m_str.size()> 4 ) を返します。 もし(m_str.size()== 4 && DEP < s.size()) のリターン; もし(DEP == s.size()) { もし(m_str.size()== 4 ) { ストリングtmpStr。 以下のために(int型 i = 0 ; iは< 3 ; iは++ ) { tmpStr + =(m_str [I] + " " )。 } tmpStr + = m_str [ 3 ]。 m_res.push_back(tmpStr)。 } を返します。 } のために(int型 I = 1 ; I <= 3 ; I ++ ) { もし、((DEP + I- 1)> = s.size()) 破ります。 もし(I == 2 ) { もし、(S [DEP] == ' 0 ' ) ブレーク。 } そう なら(I == 3 ) { もし、(S [DEP] == ' 1 ' || (S [DEP] == ' 2 ' &&(S [DEP + 1] <= ' 4 ' || (S [DEPは、+ 1 ] == ' 5 ' && S [DEP + 2 ] < ' 6 ' )))) 。 他に 休憩; } m_str.push_back(s.substr(DEP、I))。 DFS(DEP + I、S)。 m_str.pop_back(); } } ベクトル < ストリング > restoreIpAddresses(ストリングS) { m_res.clear()。 m_str.clear(); DFS(0 、S)。 返すm_resを。 } }。
ます。https://www.cnblogs.com/diegodu/p/4383721.htmlで再現