Reverse a linked list from position m to n. Do it in-place and in one-pass.
For example:
Given 1->2->3->4->5->NULL, m = 2 and n = 4,
return 1->4->3->2->5->NULL.
Note:
Given m, n satisfy the following condition:
1 ≤ m ≤ n ≤ length of list.
public class Solution {
int LEN;
public List<String> getRemainingString(String s,int position,int index){
int len=0;
List<String> result=new LinkedList<String>();
String subString;
if(index==3)
{
subString=s.substring(position);
int p=Integer.parseInt(subString);
if(p>=0&&p<=255){
if(!(subString.length()>1&&subString.startsWith("0"))){
result.add(subString);
}
}
return result;
}
int maxLEN=Math.min(3,LEN-position-(3-index));
for(len=1;len<=maxLEN;len++){
subString=s.substring(position,position+len);
int p=Integer.parseInt(subString);
if(p>=0&&p<=255){
if(!(subString.length()>1&&subString.startsWith("0"))){
result.add(subString);
}
}
}
return result;
}
public List<String> parseIP(String s,int position,int index)
{
List<String> result=new LinkedList<String>();
List<String>p=getRemainingString(s,position,index);
if(index==3){
return p;
}
for(String current:p)
{
List<String>t=parseIP(s,position+current.length(),index+1);
for(String next:t)
{
result.add(current+"."+next);
}
}
return result;
}
public List<String> restoreIpAddresses(String s) {
if(s==null||s.length()<4||s.length()>12){
return new LinkedList<String>();
}
LEN=s.length();
return parseIP(s,0,0);
}
}原文地址:http://blog.csdn.net/jiewuyou/article/details/39178107