int 数组但索引是字符?

san*_*jep 2 c++ algorithm hash

我很困惑,当索引是字符时,怎么可能有一个整数数组?另一个困惑是这条线

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;
        }
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

当类型小于的值int中的算术表达式被使用(例如像作为操作者在数组索引操作者),它被提升int

但请注意,数组元素类型和索引类型并不真正相关。

  • @sanjep 没错。 (2认同)