Given a string containing only digits, restore it by returning all possible valid IP address combinations.

For example:
Given "25525511135",

return ["255.255.11.135", "255.255.111.35"]. (Order does not matter)

将给定字符串变为合法的IP地址(所有情况)。

需要注意的是:

1、如果0作为开头,那么只能是0。

2、不能超过255。

3、注意不要越界。

尽量运用数组,速度达到最快1ms。

public class Solution {

    List result = new ArrayList<String>();
char[] IP ; public List<String> restoreIpAddresses(String s) {
int len = s.length();
if( len < 4 || len > 12)
return result;
IP = s.toCharArray(); getReult(0,0,new char[len+3]); return result; } public void getReult(int num,int pos,char[] ans){ if( num != 3){
if ( pos-num < ans.length-3 && IP[pos-num] == '0'){
ans[pos] = '0';
ans[pos+1] = '.';
getReult(num+1,pos+2,ans);
return ;
}
for( int i = pos ; i < pos+2 && i<ans.length-3+num;i++){
ans[i] = IP[i-num];
ans[i+1] = '.';
getReult(num+1,i+2,ans);
}
if( ans.length-3+num-pos >= 3){
int tt = (IP[pos-num]-'0')*100+(IP[pos-num+1]-'0')*10+(IP[pos-num+1]-'0');
if( tt <= 255 ){
ans[pos+2] = IP[pos+2-num];
ans[pos+3] = '.';
getReult(num+1,pos+4,ans);
}
} }else{ int len = ans.length-pos;
if( len < 1 || len > 3)
return ;
if ( IP[pos-num] == '0' && len != 1)
return ;
else{
if( len == 3 ){
int tt = (IP[pos-num]-'0')*100+(IP[pos-num+1]-'0')*10+(IP[pos-num+2]-'0');
if( tt > 255 )
return ;
}
for( int i = pos; i<ans.length;i++){
ans[i] = IP[i-3];
}
result.add( new String ( String.valueOf(ans))); }
} } }

leetcode 93 Restore IP Addresses ----- java的更多相关文章

  1. leetcode 93. Restore IP Addresses(DFS, 模拟)

    题目链接 leetcode 93. Restore IP Addresses 题意 给定一段序列,判断可能组成ip数的所有可能集合 思路 可以采用模拟或者DFS的想法,把总的ip数分成四段,每段判断是 ...

  2. [LeetCode] 93. Restore IP Addresses 复原IP地址

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

  3. LeetCode : 93. Restore IP Addresses

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABZ4AAAHUCAYAAAC6Zj2HAAAMFGlDQ1BJQ0MgUHJvZmlsZQAASImVlw

  4. 93.Restore IP Addresses(M)

    93.Restore IP Addresses Medium 617237FavoriteShare Given a string containing only digits, restore it ...

  5. 【LeetCode】93. Restore IP Addresses

    Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...

  6. 93. Restore IP Addresses

    题目: Given a string containing only digits, restore it by returning all possible valid IP address com ...

  7. 【leetcode】Restore IP Addresses

    Restore IP Addresses Given a string containing only digits, restore it by returning all possible val ...

  8. 【一天一道LeetCode】#93. Restore IP Addresses

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  9. Java for LeetCode 093 Restore IP Addresses

    Given a string containing only digits, restore it by returning all possible valid IP address combina ...

随机推荐

  1. 改变Chrome浏览器主程序_缓存_个人信息路径

      改变Chrome浏览器缓存_个人信息路径(亲测) actionx2上传于2012-10-26|(7人评价)|3077人阅读|41次下载|文档简介|举报文档    在手机打开   改变 Chrom ...

  2. Android再次激活Activity时触发事件用于列表重新读取载入

    @Override protected void onResume(){ super.onResume(); getList(); } 重载 onResume() 方法

  3. 查看UI调试界面利器 revealapp

    官网 http://revealapp.com 做iOS的开发,UI是非常非常重要的一环.调试时我们一般用模拟器,提交前用真机做测试.用模拟器来调试UI效果虽然快捷方便,但有时仍然希望有更强大的工具来 ...

  4. main函数参数的使用

    int main(int argc, char * argv[]) argc: argument count argv:argument vector 其中, char * argv[] 指针数组 c ...

  5. 弹框工作区(dialog)

    弹出窗口分为普通弹出窗口和模态弹出窗口,普通弹出窗口可以铜鼓taskBar组件进行最小化等操作.弹出的窗口的DOM结构会放入主页面的body中,结构如下: <div class="bj ...

  6. java运算符的优先级

    Java 编辑 运算符 结合性 [ ] . ( ) (方法调用) 从左向右 ! ~ ++ -- +(一元运算) -(一元运算)  从右向左 * / % 从左向右 + - 从左向右 << & ...

  7. namenode 和datanode无法启动,错误:FSNamesystem initialization failed. datanode.DataNode: Incompatible namespaceIDs

    问题一: namenode无法启动,查看日志,错误信息如下: org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem ini ...

  8. struts2常见配置

    <struts> <!--开发模式设置:该属性设置Struts2应用是否使用开发模式.如果设置该属性为true,则可以在应用出错时显示更多.更友好的出错提示.该属性只接受true和f ...

  9. 转载一篇文章 python程序员经常犯的10个错误

    一位同事推荐的.翻译的不错. http://www.oschina.net/translate/top-10-mistakes-that-python-programmers-make

  10. 使用Qemu调试内核

    利用Qemu进行内核源码级调试 http://blog.csdn.net/gdt_a20/article/details/7231652 用Qemu调试Linux内核 http://blog.chin ...