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

C++设计PDF查看器题目中maxheight计算逻辑疑问

PDF查看器编程题maxHeight获取逻辑解析

这个题的预设规则是:26个小写字母各有自定义的显示高度,要求计算给定字符串的高亮区域总面积,面积公式为「字符串长度 × 字符串中最高字符的高度」,你疑惑的最大高度获取逻辑拆解如下:

前置变量说明

  • heights[26]:按顺序存储a-z共26个小写字母的高度,下标0对应a的高度、下标1对应b的高度,以此类推
  • str:待计算的输入字符串,所有字符均为小写字母
  • 代码里的变量height就是你问的maxHeight,用来存当前遍历到的最大字符高度

最大高度计算逻辑逐行说明

  1. 初始化:int height = -1
    因为字母的高度一定是正整数,把初始值设为-1,保证第一个遍历到的字符高度肯定会替换掉初始值
  2. 遍历字符串逐一比对:
    for(int i = 0; i < len; i++){
        if(heights[str[i]-'a'] > height)
            height = heights[str[i]-'a'];
    }
    
    • str[i]-'a':把字符转成对应heights数组的下标,比如字符是c的话,'c'-'a'等于2,刚好对应heights[2]也就是c的高度
    • 每次拿当前字符的高度和已经记录的最大高度height比对,如果当前字符更高,就更新height为当前字符的高度
  3. 遍历结束:此时height已经是整个字符串里所有字符的最大高度,直接用字符串长度乘最大高度就能得到要求的面积

写法优化参考(C++11及以上)

可以用范围for循环简化手写逻辑,可读性更高:

int max_h = 0;
for (char c : str) {
    max_h = max(max_h, heights[c-'a']);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:18:00