chenyang.feng.cn
BAN USERpublic static List<String> epic(String s) {
List<String> r = new ArrayList<String>();
int left = 0, right = 0;
while (right < s.length()) {
while (right < s.length() - 1 && s.charAt(right) + 1 == s.charAt(right + 1))
right++;
if (right - left >= 1) {
r.add(s.substring(left,right+1));
}
left = right + 1;
right = left;
}
return r;
}
int a[][] = {{1,2,3,2,5},{1,3,4,3,2},{1,2,1,2,1} };
out put :
snake: 2 3 4 3 2 1
snake: 1 3 4 3 2 1
snake: 2 3 4 3 2 1
snake: 1 3 4 3 2 1
snake: 2 3 4 1 2 1
snake: 1 3 4 1 2 1
snake: 2 3 2 1 2 1
snake: 1 3 2 1 2 1
this should be the right one :
check it out
public static void epic(int[][] m) {
if(m.length==0 || m[0].length==0)
return;
int[][] dp = new int[m.length][m[0].length];
int max= 0;
for(int i=1;i<m.length;i++){
for(int j=1;j<m[0].length;j++){
if(Math.abs(m[i-1][j]-m[i][j])==1){
dp[i][j] = Math.max(dp[i][j],dp[i-1][j]+1);
max = Math.max(max,dp[i][j]);
}
if(Math.abs(m[i][j-1]-m[i][j])==1){
dp[i][j] = Math.max(dp[i][j],dp[i][j-1]+1);
max = Math.max(max,dp[i][j]);
}
}
}
for(int i=0;i<m.length;i++){
for(int j=0;j<m[0].length;j++){
if(dp[i][j]==max){
printsnake(m,dp,i,j,new Stack<Integer>());
}
}
}
}
public static void printsnake(int[][] m,int[][] dp,int row,int col,Stack<Integer> stack){
if(dp[row][col] == 0){
System.out.print(" snake: "+m[row][col]+" ");
Stack<Integer> s = (Stack<Integer>)stack.clone();
while(!s.isEmpty()){
System.out.print(s.pop()+" ");
}
System.out.println();
}
stack.add(m[row][col]);
if(row>0 && dp[row-1][col]+1==dp[row][col]){
printsnake(m,dp,row-1,col,stack);
}
if(col>0 && dp[row][col-1] +1==dp[row][col])
printsnake(m,dp,row,col-1,stack);
stack.pop();
}
come on, you forgot this
- chenyang.feng.cn April 07, 2014if(str[i]=='a' && i>1 && i<str.length()-1 && str[i+1]==' ' && str[i-1]==' ')