标题1.给定字符串,实现字符串压缩功能,如“abbccdddaaaa”,压缩后为"a1b2c2d3a4",压缩后的长度始终小于原字符串长度,否则则输出原字符串,例"abccd",输出"abccd",压缩后为"a1b1c2d"比原字符
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String str = sc.nextLine();
StringBuffer result = new StringBuffer();
char word1 = str.charAt(0);// 取第一个字符
int sum = 1;// 连续字符的个数
for (int i = 1; i < str.length(); i++) {
char word2 = str.charAt(i); // 循环取字符
if (word1 == word2) {// 把前一个字符和当前字符比较
sum++; // 相同的字符 个数加1
continue;
}
result.append(word1).append(sum); // 拼接字符
word1 = word2; // 当前字符变为前一个字符
sum = 1;// 重置
}
if(result.length()>str.length()){
System.out.println(str);
}
else {
System.out.println("字符串压缩后:" + result.append(word1).append(sum));// 加上最后一个字符及个数,打印输出
}
}
}
2.将矩阵二维数组翻转
输入:{{1,2,3},{4,5,6},{7,8,9}}
输出:{{7,8,9},{4,5,6},{1,2,3}}
public class ShangXiaSort {
public static void main(String[] args) {
int temp = 0;
int matrix[][] = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
int M = matrix.length;
int N = matrix[0].length;
for (int p1 = 0; p1 < matrix.length; p1++) {
for (int j = 0; j < N; j++) {
System.out.print(matrix[p1][j]+" ");
}
System.out.println();
}
for(int p=0;p<M/2;p++){
for(int q=0;q<N;q++){
temp=matrix[p][q];
matrix[p][q]=matrix[M-p-1][q];
matrix[M-p-1][q]=temp;
}
}
System.out.println("===============");
for (int p1 = 0; p1 < M; p1++) {
{
for (int j = 0; j < N; j++) {
System.out.print(matrix[p1][j]+" ");
}
System.out.println();
}
}
}
}
如果将这题改成了求转置,那么解法为
public class ZhuanZhiSort {
public static void main(String[] args) {
int[][] arr = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr.length; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
System.out.println("===============");
// 分析:我们可以看出二维数组的翻转后的交换
//遍历这个二维数组
for (int i = 0; i < arr.length; i++) {
// [1][0]和[0][1]换
// [2][0]和[0][2]换
// [2][1]和[1][2]换
// 可以发现,j < i,不然就又交换回去了
for (int j = 0; j < i; j++) {
int a = arr[i][j];
arr[i][j] = arr[j][i];
arr[j][i] = a;
}
}
for (int[] is : arr) {
for (int i : is) {
System.out.print(i + " ");
}
System.out.println();
}
}
}