[LeetCode] IPアドレスを復元

オリジナルリンク: http://www.cnblogs.com/diegodu/p/4383721.html

数字だけを含む文字列を考えると、すべての可能な有効なIPアドレスの組み合わせを返すことによって、それを復元します。

たとえば、次のように
考えると  "25525511135"

リターン  ["255.255.11.135", "255.255.111.35"](順序は関係ありません)

 

タグを非表示にします
  バックトラック の文字列
 

 

アイデア: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で再現

おすすめ

転載: blog.csdn.net/weixin_30814319/article/details/94792090