有一个二维数组(n*n),写程序实现从右上角到左下角沿主对角线方向打印。
给定一个二位数组arr及题目中的参数n,请返回结果数组。
测试样例:
[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]],4
返回:[4,3,8,2,7,12,1,6,11,16,5,10,15,9,14,13]
import java.util.*;
public class Printer {
public int[] arrayPrint(int[][] arr, int n) {
// write code here
int[] result = new int[n * n];
int row = 0, col = n - 1, index = 0;
while(row < n) {
while(row < n && col < n) {
result[index++] = arr[row][col];
row++;
col++;
}
if(row < col) {
col -= row + 1;
row = 0;
} else {
row -= col - 1;
col = 0;
}
}
return result;
}
}
给定一个字符串,问是否能通过添加一个字母将其变为回文串。
输入描述:
一行一个由小写字母构成的字符串,字符串长度小于等于10。
输出描述:
输出答案(YES\NO).
示例1
输入
coco
输出
YES
import java.util.*;
public class Main{
public static void main(String as[]){
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String s=in.next();
System.out.println(getAns(s.toCharArray(),0,s.length()-1,false)?"YES":"NO");
}
}
private static boolean getAns(char[] a,int start,int end,boolean flag){
if(end<=start){
return true;
}
if(a[start]==a[end]){
return getAns(a,start+1,end-1,flag);
}
else{
if(flag){
return false;
}
return getAns(a,start,end-1,true)||getAns(a,start+1,end,true);
}
}
}