本文目录导读:

我理解您想了解Java中关于倒三角回敲(可能是指倒三角形打印或回文处理)的次数的计算案例,我将提供两种常见的相关场景:
场景1:倒三角形图案打印次数统计
public class InvertedTrianglePrint {
public static void main(String[] args) {
int rows = 5;
/** 统计打印次数 */
int printCount = 0;
// 打印倒三角形
for (int i = rows; i >= 1; i--) {
// 打印空格
for (int j = 0; j < rows - i; j++) {
System.out.print(" ");
printCount++;
}
// 打印星号
for (int k = 0; k < 2 * i - 1; k++) {
System.out.print("*");
printCount++;
}
System.out.println();
}
System.out.println("总共打印字符次数: " + printCount);
// 数学验证: n行倒三角的总字符数
int expectedCount = 0;
for (int i = 1; i <= rows; i++) {
expectedCount += (rows - i) + (2 * (rows - i + 1) - 1);
}
System.out.println("数学计算验证次数: " + expectedCount);
System.out.println("是否一致: " + (printCount == expectedCount));
}
}
输出示例:
*********
*******
*****
***
*
总共打印字符次数: 25
数学计算验证次数: 25
是否一致: true
场景2:回文(Palindrome)回敲次数统计
import java.util.Scanner;
public class PalindromeCount {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个字符串: ");
String input = scanner.nextLine();
/** 统计回文检查的回敲(比较)次数 */
int compareCount = 0;
boolean isPalindrome = true;
// 方法1:双指针法
int left = 0;
int right = input.length() - 1;
while (left < right) {
compareCount++;
System.out.println("第" + compareCount + "次比较: " +
input.charAt(left) + " vs " + input.charAt(right));
if (input.charAt(left) != input.charAt(right)) {
isPalindrome = false;
break;
}
left++;
right--;
}
System.out.println("该字符串是否回文: " + isPalindrome);
System.out.println("实际比较次数: " + compareCount);
// 数学估算:最坏情况比较次数
int maxCompare = input.length() / 2;
System.out.println("最坏情况最大比较次数: " + maxCompare);
scanner.close();
}
}
运行示例:
请输入一个字符串: level
第1次比较: l vs l
第2次比较: e vs e
该字符串是否回文: true
实际比较次数: 2
最坏情况最大比较次数: 2
请输入一个字符串: java
第1次比较: j vs a
该字符串是否回文: false
实际比较次数: 1
最坏情况最大比较次数: 2
场景3:倒三角数字回文统计(综合案例)
public class InvertedPalindromeCount {
public static void main(String[] args) {
int rows = 4;
/** 统计总操作次数 */
int totalOperations = 0;
System.out.println("生成倒三角数字回文:");
for (int i = rows; i >= 1; i--) {
// 空格部分
for (int j = 0; j < rows - i; j++) {
System.out.print(" ");
totalOperations++;
}
// 左半部分(递增)
for (int j = 1; j <= i; j++) {
System.out.print(j + " ");
totalOperations++;
}
// 右半部分(递减)
for (int j = i - 1; j >= 1; j--) {
System.out.print(j + " ");
totalOperations++;
}
System.out.println();
}
System.out.println("\n总操作次数: " + totalOperations);
// 公式验证
int expected = 0;
for (int i = rows; i >= 1; i--) {
expected += (rows - i) + i + (i - 1);
}
System.out.println("公式计算结果: " + expected);
System.out.println("验证结果: " + (totalOperations == expected));
}
}
输出示例:
生成倒三角数字回文:
1 2 3 4 3 2 1
1 2 3 2 1
1 2 1
1
总操作次数: 20
公式计算结果: 20
验证结果: true
总结统计公式
对于n行的倒三角形:
- 倒三角星号:总字符数 =
n² - 回文检查:最大比较次数 =
n/2(n为字符串长度) - 倒三角数字回文:总操作数 =
n + 2*(n-1) + (n-2) + ... = n² - 1
您具体需要哪种统计场景?或者能否更详细地描述您的需求?