You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现空心正方形图案底部单词反转效果?

问题分析

你的代码存在两个核心问题:

  • 循环逻辑错误,在顶部和循环末尾都重复添加了原单词,导致输出多了一行原单词,反转字符串被挤到最后。
  • 中间行的字符索引取值不符合预期,没有正确匹配原单词首尾对称的字符。
修改后的代码
public static String pattern(String str) {
    // 使用StringBuilder提升字符串拼接效率
    StringBuilder result = new StringBuilder();
    int length = str.length();
    
    // 添加顶部的原单词
    result.append(str).append("\n");
    
    // 生成中间的空心行:循环length-1次,对应首尾对称的字符
    for (int i = 0; i < length - 1; i++) {
        char leftChar = str.charAt(i);
        char rightChar = str.charAt(length - 1 - i);
        result.append(leftChar).append("     ").append(rightChar).append("\n");
    }
    
    // 添加底部的反转单词
    result.append(reverse(str));
    
    return result.toString();
}

public static String reverse(String str) {
    StringBuilder reversed = new StringBuilder();
    for (int i = str.length() - 1; i >= 0; i--) {
        reversed.append(str.charAt(i));
    }
    return reversed.toString();
}
修改说明
  1. 调整结构逻辑:
    • 单独添加顶部的原单词,不再通过循环判断重复添加。
    • 循环生成length-1行中间空心内容,每行取原单词第i位和倒数第i+1位的字符,保证对称的空心效果。
    • 最后直接添加反转后的单词作为正方形底部,符合需求。
  2. 优化性能:将String直接拼接替换为StringBuilder,避免频繁创建字符串对象,提升代码运行效率。
  3. 修正反转方法:同样用StringBuilder优化反转逻辑,比原有的substring拼接更简洁高效。

测试输入"CompSci"时,输出将符合预期:

CompSci
C i
o c
m S
p p
S m
c o
icSpmoC

(注:若你预期中间行的字符对应有特殊调整,可根据实际需求修改循环中leftChar和rightChar的索引取值)

内容的提问来源于stack exchange,提问作者Maybe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 06:03:20