1. 程式人生 > >【leetcode】93.(Medium)Restore IP Addresses

【leetcode】93.(Medium)Restore IP Addresses

解題思路:
回溯


提交程式碼:回溯

class Solution {
    public List<String> restoreIpAddresses(String s) {
    	 List<String> ans=new ArrayList<String>();
    	 if(s.length()<4)	return ans;
    	 
    	 String base="";
    	 findIpAddresses(0,s,1,base,ans);
    	 return ans;
    }
    
    public
void findIpAddresses(int p,String s,int segment, String base,List<String> ans) { if(segment==4) { if(p<s.length()-3||p>=s.length()) return; String tmp=s.substring(p); if(tmp.length()!=1&&tmp.charAt(0)=='0') return; if(tmp.length()==3&&
tmp.compareTo("255")>0) return; ans.add(base+tmp); } for(int i=1;i<=3;i++) { if(p+i>s.length()) break; String tmp=s.substring(p, p+i); if(tmp.length()!=1&&tmp.charAt(0)=='0') continue; if(tmp.length()==3&&tmp.compareTo("255")>
0) break; findIpAddresses(p+i,s,segment+1,base+tmp+".",ans); } } }

執行結果:
在這裡插入圖片描述