字符串转化为int类型的用法汇总

在处理字符串相关的问题时,字符转换为整数后通常被用作数组或哈希表的下标,可以方便地记录字符的频率或查询字符的映射关系。以下是几个C++中字符转化为整数的应用例子:

  • 计算字符串的哈希值:字符到整数的转换可以用于计算字符串的总体哈希值,这对于字符串的快速查找或比较非常有用。
int simple_hash(string s) {
    int hash_value = 0;
    for (char c : s) {
        hash_value += static_cast<int>(c);
    }
    return hash_value;
}
  • 实现字母表的加密和解密:字符到整数的转换也可以用于字母表的加密和解密,比如凯撒密码就是一种通过移动字母表位置实现加密和解密的方法。
string caesar_cipher(string s, int shift) {
    string result = "";
    for (char c : s) {
        char shifted_c = (c - 'a' + shift) % 26 + 'a';
        result += shifted_c;
    }
    return result;
}
  • 记录字符频率字符到整数的转换可以用于构建字符的频率表。这在处理字符串问题时是非常常见的技巧。
vector<int> frequency_table(string s) {
    vector<int> freq_table(26, 0);
    for (char c : s) {
        freq_table[c - 'a']++;
    }
    return freq_table;
}

static_cast(c)的用法与限制

在C++中,可以使用static_cast(c)来将字符c直接转换为其对应的ASCII码值。如果c是数字字符’2’,那么static_cast(c)返回字符’2’的ASCII码值,也就是50

例如:

int simple_hash(string s) {
    int hash_value = 0;
    for (char c : s) {
        hash_value += static_cast<int>(c);
    }
    return hash_value;
}

然而,如果想得到数字字符’2’对应的整数2(而不是ASCII码值50),那么必须使用c - '0'这样的操作。这是因为数字字符’0’到’9’的ASCII码值是连续的,且**'0’的ASCII码值是48,'1’是49,'2’是50**,以此类推。因此,c - '0'可以得到数字字符对应的整数值。

static_cast(c)c - '0'都可以将字符转换为整数,但它们得到的结果是不同的。

相关题目:

6465.执行子串操作后的字典序最小字符串

242.有效字母异位词 (频率表)

17.电话号码的字母组合

你可能感兴趣的:(c++,算法)