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

C++回文字符串判断代码运行时大写字符变小写问题咨询

问题成因分析

核心错误:反转循环边界设置错误

你代码中负责反转写入的逻辑存在边界错误,对应代码段如下:

for (i = 0; i < n - 1; i++) {
    x[i] = y[c];
    c--;
}
x[i] = '\0';

其中n是过滤后y数组的有效字符长度,你设置的循环条件i < n-1只会执行n-1次赋值操作,仅将y数组下标从n-1到1的字符依次写入x数组,y数组下标为0的首字符(也就是你测试用例里的大写字母A)完全没有被写入x数组。
循环结束后i的值等于n-1,你直接执行x[i] = '\0'将x数组的第n-1位设为字符串结束符,直接覆盖了本该写入的大写A,所以你会观察到x数组丢失了原本的首字母大写A,看起来像是大写字符被转为小写,实际上是该字符根本没有被写入到结果中。

修复方案

将反转循环的条件改为i < n即可解决大小写丢失问题,修改后反转逻辑会执行n次赋值,把y数组的所有字符反转写入x数组。

其他注意事项

  • 当前代码的回文判断逻辑是区分大小写的,如果需要实现通用的回文判断(忽略大小写差异),可以在过滤字符时统一转为大写/小写后再存入y数组。
  • 当前代码未严格校验输入长度,如果输入的字母总数超过49,会导致y数组溢出,存在内存安全风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:48:05