小C的类二进制拼图

43 阅读2分钟

#include #include using namespace std; int solution(string n) { int max_digit = 0; // 用于记录最大位数

// 遍历字符串 n,找到最大位数
for (char c : n) {
    int digit = c - '0';  // 将字符转换为数字
    max_digit = max(max_digit, digit);  // 更新最大位数
}

return max_digit;

} int main() { cout << (solution("10101") == 1) << endl; cout << (solution("212") == 2) << endl; cout << (solution("1000000") == 1) << endl; cout << (solution("123456789") == 9) << endl; cout << (solution("9876543210") == 9) << endl; return 0; } 算法思路 该算法的主要目的是找到给定字符串(代表一个数字)中的最大数字字符。具体步骤如下: 初始化变量: max_digit:用于存储遍历过程中遇到的最大数字字符,初始化为0。 遍历字符串: 使用范围for循环(for (char c : n))遍历字符串n中的每个字符。 对于每个字符c,将其转换为对应的整数(int digit = c - '0')。这里利用了字符编码的特性,即在ASCII码表中,数字字符'0'到'9'是连续排列的,因此可以通过减去字符'0'的ASCII值来得到对应的整数值。 更新最大数字: 使用max函数比较当前字符转换后的整数digit和max_digit,将较大的值赋给max_digit。 返回结果: 遍历完成后,max_digit中存储的就是字符串中的最大数字字符,将其作为函数的返回值。 算法分析 时间复杂度 遍历字符串:算法的核心是遍历字符串中的每个字符,因此时间复杂度为O(n),其中n是字符串的长度。 空间复杂度 变量存储:算法中只使用了几个整型变量来存储中间结果,因此空间复杂度为O(1)。