题目描述
有一个NxN整数矩阵,请编写一个算法,将矩阵顺时针旋转90度。
给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于300。
测试样例:
[[1,2,3],[4,5,6],[7,8,9]],3
返回:[[7,4,1],[8,5,2],[9,6,3]]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
while(in.hasNext()){
String inStr=in.next();
String[] inArr = inStr.split("],");
int len=inArr.length;
int lenArr=Integer.valueOf(inArr[len-1]);//[]里数组长度
StringBuffer rsTemp=new StringBuffer("");
//处理第一个数组
StringBuffer firstArr = new StringBuffer(inArr[0]);
String firstStr=firstArr.substring(2);
rsTemp.append(firstStr+",");
//System.out.println(firstStr);
//处理中间数组
for (int i = 1; i < lenArr-1; i++) {
String midStr = inArr[i].substring(1);
rsTemp.append(midStr+",");
//System.out.println(midStr);
}
//处理最后一个数组
StringBuffer lastArr = new StringBuffer(inArr[lenArr-1]);
String lastStr=lastArr.substring(1,lastArr.length()-1);
rsTemp.append(lastStr);
//System.out.println(lastStr);
//System.out.println(rsTemp.toString());
String[] strArr = rsTemp.toString().split(",");
//System.out.println(strArr.length);
StringBuffer rs=new StringBuffer("");
int strArrlen=strArr.length;
for(int j=strArrlen-lenArr;j<=strArrlen-1;j++){
//System.out.println(j);
rs.append("[");
for(int i=j;i>=0;i-=lenArr){
if(i<lenArr){
rs.append(strArr[i]);
}else{
rs.append(strArr[i]+",");
}
//System.out.println(i);
}
if(j==strArrlen-1){
rs.append("]");
}else{
rs.append("],");
}
}
System.out.println("["+rs+"]");
}
}
}