有没有办法对字符串中的字符使用枚举?C ++

McFloofenbork

这是从LeetCode上删除的,但是基本上给出了一个由几个唯一字符组成的字符串,每个字符都有一个关联的整数值,我需要快速处理该字符串的总整数值。我认为枚举会很有用,因为您知道什么将构成字符串。

枚举是字符串中可以包含的字符类型(可以看到它是有限的)。如果具有较小值的字符位于具有较大值的字符之前,例如IV,则我从其后的字符中减去前一个字符的值。否则,您添加。代码是我的尝试,但是我无法让枚举与我的算法一起使用...

std::string s = "III";
int sum = 0;

enum {I = 1, V = 5, X = 10, L = 50, C = 100, D = 500, M = 1000};

// O(n) iteration.
for (int i = 0; i < s.length(); i++) {
  // Must subtract.
  if (s[i] < s[i+1]) {
    sum += s[i+1] - s[i];
  }
  // Add.
  else {
    sum += s[i];
  }
}

std::cout << "sum is: " << sum;

那么我的问题是1)是否可以将enum与字符串一起使用?2)我知道可以使用unordered_map,但我认为枚举要快得多。

约瑟夫·D

2)我知道可以使用unordered_map,但我认为枚举要快得多。

您正在将桔子与苹果进行比较。

首先,enum不是容器。它基本上就像一系列已知常量一样。

当您表示访问时间operator[]

unordered_map

无序映射是一个关联容器,其中包含具有唯一键的键值对。搜索,插入和删除元素的平均 恒定时间复杂度。

因为string它也是恒定时间访问。

1)正在使用带字符串的枚举

否。enum键基本上就像值的“别名”。请注意,每个字符串都是一个字符序列:

V != "V"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在C中的字符串中重复字符?

有没有办法使用 for 循环从索引中删除特定字符串?

有没有办法使用 Python 从 JSON 文件中删除某些字符串?

有没有办法使用列表中的字符串作为数组的标签?

有没有办法在 C++ 中计算没有字符的字符串中的单词?

有没有办法删除BigQuery中的字符串数组中的字符?

有没有办法从R中的字符串中按索引删除字符?

有没有办法在字符串中添加字符?

SwiftUI 中有没有办法更改字符串中特殊字符的颜色?

ruby 有没有办法从字符串中完全取消转义字符?

有没有办法在 C++ 中比较字符和字符串?

有没有办法将字符串插入字符集?C++

有没有办法计算c#中给定字符串中某个单词的字符数?

有没有办法删除字符串中的所有空格?javascript

有没有办法从JavaScript中的字符串中删除html标签?

有没有办法在Javascript中替换字符串中的某种格式?

有没有办法在Android中以编程方式更改子字符串的颜色?

有没有办法在 numba jitclass 中包含字符串属性?

有没有办法从角度2的字符串中删除html标签?

有没有办法忽略串联字符串中的被调用变量?

有没有办法在 F# 中通过字符串获取记录字段?

有没有办法将函数的名称返回给Rust中的字符串?

有没有办法在 SQL Server 中循环字符串?

有没有办法在f字符串中包含评论?

有没有办法删除字符串中重复的和连续的单词/短语?

有没有办法在 Javascript 中显示多行字符串?

有没有办法强制 krunner 在 konsole 中运行任何字符串?

有没有办法将excel文件中的日期作为字符串导入?

有没有办法在 Laravel 中解释多参数查询字符串?