检查字符串是否代表十六进制数

data structurec++server side programmingprogramming

在计算机科学中,十六进制是一种以 16 为基数的数字系统。它使用 16 个不同的符号,包括从 0 到 9 的十个十进制数字和从 0 到 15 的六个字母 A、B、C、D、E 和 F。在本文中,我们将讨论如何检查字符串是否代表十六进制数。

问题陈述

给定一个字符串,任务是检查它是否代表有效的十六进制数。

方法

我们可以通过遍历字符串中的字符并检查它们是否属于有效十六进制字符集来解决这个问题。有效的十六进制字符是从 0 到 9 的数字和从 A 到 F 的字母(大写或小写)。如果字符串中的所有字符都属于此集合,则该字符串表示有效的十六进制数。

示例

以下是上述方法的 C++ 代码实现 −

#include <iostream>
#include <string>

using namespace std;

bool isHexadecimal(string s) {
   int n = s.length();
   
   for (int i = 0; i < n; i++) {
      if (!isxdigit(s[i])) {
         return false;
      }
   }
   
   return true;
}

int main() {
    string s1 = "ABCD1234";
    string s2 = "12G4F5";
    
    if (isHexadecimal(s1)) {
        cout << s1 << " 表示有效的十六进制数。" << endl;
    } else {
        cout << s1 << " 不表示有效的十六进制数。" << endl;
    }
    
    if (isHexadecimal(s2)) {
        cout << s2 << " 表示有效的十六进制数。" << endl;
    } else {
        cout << s2 << " 不表示有效的十六进制数。" << endl;
    }
    
    return 0;
}

输出

运行上述代码将输出

ABCD1234 表示有效的十六进制数。
12G4F5 不表示有效的十六进制数。

时间复杂度

解决方案的时间复杂度为 O(N),其中 N 是字符串的长度。

空间复杂度

解决方案的空间复杂度为 O(1)。

在上面的代码中,我们定义了一个函数 isHexadecimal,它以字符串作为输入,如果字符串表示有效的十六进制数,则返回 true,否则返回 false。我们使用 isxdigit 函数检查字符串中的每个字符是否属于有效十六进制字符集。

测试用例

我们以两个字符串 s1 = "ABCD1234" 和 s2 = "12G4F5" 为例。字符串 s1 表示有效的十六进制数,因为字符串中的所有字符都属于有效十六进制字符集。另一方面,字符串 s2 不表示有效的十六进制数,因为它包含字符"G",而这不是一个有效的十六进制字符。

结论

总之,我们可以通过迭代其字符并检查它们是否属于有效十六进制字符集,轻松检查字符串是否表示有效的十六进制数。


相关文章