c++ - int 数组但索引是字符?
问题描述
我很困惑,当索引是字符时,怎么可能有一个整数数组?另一个困惑是这条线
if(i + 1 < N && nums[s[i+1]] > nums[s[i]])
字符串是否被转换为整数,然后映射到 nums 数组,类似于将其散列到索引?
int romanToInt(string s) {
const int N = s.length();
int nums[128];
nums['I'] = 1;
nums['V'] = 5;
nums['X'] = 10;
nums['L'] = 50;
nums['C'] = 100;
nums['D'] = 500;
nums['M'] = 1000;
int result = 0;
for(int i = 0; i < N; ++i)
{
if(i + 1 < N && nums[s[i+1]] > nums[s[i]])
result -= nums[s[i]];
else
result += nums[s[i]];
}
return result;
}
解决方案
当在算术表达式中使用小于类型的值时int
(例如作为数组索引运算符的运算符),它被提升为.int
但请注意,数组元素类型和索引类型并不真正相关。
推荐阅读
- android - 有没有什么简单的方法可以在 NativeScript/Angluar 中为 IOS 和 Android 创建后台任务?
- pytest - 如何在 pytest-html 报告中添加标记
- facebook - Facebook ID 匹配 API 说令牌无效
- r - 在 geom_bar(aes()) 而不是 ggplot(aes()) 中传递变量时反转标签排序
- android - 为什么每次运行项目时我的 BuildConfig 类都会重复
- c++ - 有没有更有效的方法来检查列表中的两个数字加起来是否为 int, k?
- php - Windows 上的 MAMP - 单击启动服务器,除非使用 PHP 7.3.7,否则不会发生任何事情
- java - 如何使用按钮使按钮可见?
- node.js - 将禁用词存储在任何文件或数据库中
- javascript - 为什么我的代码不允许连续两次上传相同的图像文件?