题目描述
对于一个字符串,和字符串中的某一位置,请设计一个算法,将包括i位置在内的左侧部分移动到右边,将右侧部分移动到左边。
给定字符串A和它的长度n以及特定位置p,请返回旋转后的结果。
测试样例: “ABCDEFGH”,8,4
返回:“FGHABCDE”
import java.util.*;
public class StringRotation {
public String rotateString(String A, int n, int p) {
String B=A+A;
String C=B.substring(p+1,p+n+1);
return C;
}
public static void main(String[] args) {
String A="ABCDEFGH";
StringRotation stringRotation=new StringRotation();
stringRotation.rotateString(A,8,4);
}
}
题目描述
对于一个矩阵,请设计一个算法,将元素按“之”字形打印。具体见样例。
给定一个整数矩阵mat,以及他的维数nxm,请返回一个数组,其中元素依次为打印的数字。
测试样例:
[[1,2,3],[4,5,6],[7,8,9],[10,11,12]],4,3
返回:[1,2,3,6,5,4,7,8,9,12,11,10]
import java.util.*;
public class Printer {
public int[] printMatrix(int[][] mat, int n, int m) {
int[] arr= new int[n*m];
for (int i = 0; i < n; i++) {
if (i % 2 == 0) {
for (int j = 0; j < m; j++) {
arr[m*i+j]=mat[i][j];
}
}else {
for (int j = 0; j < m; j++) {
arr[m*i+j]=mat[i][m-j-1];
}
}
}
return arr;
}
}