3593 蓝桥杯 查找最大元素 简单

3593 蓝桥杯 查找最大元素 简单

cpp 复制代码
// C风格解法1,通过率100%,多组数据处理样式

//str = "abcdefgfedcba"
//abcdefg(max)fedcba

//str = "xxxxx"
//x(max)x(max)x(max)x(max)x(max)

#include<bits/stdc++.h>

const int N = 1e2 + 10;

char str[N];

void solve(){
    scanf("%s", str); // 读入字符串 str
    int n = (int) strlen(str); 
    // strlen(str) 求从 str 这个地址出发到下一个 '\0' 的位置所经过的长度,
    // 实际上可以理解为字符串长度,O(|str|)
    char mx = 0; // 去求最大字母
    for(int i = 0; i < n; i++){
        mx = std::max(mx, str[i]); // 循环求最大字母
    } 
    for(int i = 0; i < n; i++){
        printf("%c", str[i]);
        if(str[i] == mx){ // 每当遇到最大字母时,立刻输出(max)
            printf("%s","(max)");
        }  
    }
    printf("\n");   
}

int main(){
    int T;    scanf("%d", &T); // 输入测试组数
    while(T--){ // while(T > 0){T--;...}
        solve();
    }
    return 0;
}

C语言 strlen 函数用来求字符串的长度(包含多少个字符)。

strlen() 函数从字符串的开头位置依次向后计数,直到遇见 '\0',然后返回计时器的值。最终统计的字符串长度不包括 '\0'。

头文件:string.h

char str[] = "http://c.biancheng.net";

运行结果为:

sizeof = 23

strlen = 22

sizeof 统计出的字符串长度比 strlen() 函数的统计值大 1。因为 sizeof 统计了字符串结尾的 '\0',而 strlen() 函数没有。

但是,sizeof 和 strlen() 函数的功能并不相同,strlen() 函数才是专门用来统计字符串长度,而 sizeof 不是。

cpp 复制代码
// C++风格解法2,通过率100%,多组数据处理样式

//str = "abcdefgfedcba"
//abcdefg(max)fedcba

//str = "xxxxx"
//x(max)x(max)x(max)x(max)x(max)

#include<bits/stdc++.h>

void solve(){
    std::string s;    std::cin >> s; // 不建议使用getline,建议使用cin
    //getline 一般会把第一行剩余的换行符等信息读入,导致少读一次
    int n = (int) s.size(); // O(1) 
    char mx = 0; // 求最大字母
    for(int i = 0; i < n; i++){
        mx = std::max(mx, s[i]); // 循环求最大字母
    } 
    for(int i = 0; i < n; i++){
        std::cout << s[i];
        if(s[i] == mx){ // 每当遇到最大字母,输出(max)
            std::cout << "(max)";
        }  
    }
    std::cout << "\n";   
}

int main(){
    std::ios::sync_with_stdio(false);std::cin.tie(nullptr);
    std::cout.tie(nullptr);

    int T;    std::cin >> T; // 输入测试组数
    while(T--){ // while(T > 0){T--;...}
        solve();
    }
    return 0;
}

// 使用getline
/*
2
ab
c
2'\n'ab'\n'c'\n'
*/
// std::cin >> T,此时T = 2,输入为'\n'ab'\n'c'\n'
// 第一个 getline(std::cin, s) ,s = "",剩余输入为 ab'\n'c'\n'
// 第二个 getline(std::cin, s) ,s ="ab",剩余输入为 c'\n'

reference:

C语言strlen()函数:求字符串的长度

char字符对应ASCII码表0-255(全)_char字符对应的ascii码值-CSDN博客

相关推荐
zheyutao41 分钟前
字符串哈希
算法
A尘埃1 小时前
保险公司车险理赔欺诈检测(随机森林)
算法·随机森林·机器学习
大江东去浪淘尽千古风流人物2 小时前
【VLN】VLN(Vision-and-Language Navigation视觉语言导航)算法本质,范式难点及解决方向(1)
人工智能·python·算法
独好紫罗兰2 小时前
对python的再认识-基于数据结构进行-a003-列表-排序
开发语言·数据结构·python
wuhen_n2 小时前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
努力学算法的蒟蒻2 小时前
day79(2.7)——leetcode面试经典150
算法·leetcode·职场和发展
2401_841495642 小时前
【LeetCode刷题】二叉树的层序遍历
数据结构·python·算法·leetcode·二叉树··队列
AC赳赳老秦2 小时前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
独好紫罗兰3 小时前
对python的再认识-基于数据结构进行-a002-列表-列表推导式
开发语言·数据结构·python
2401_841495643 小时前
【LeetCode刷题】二叉树的直径
数据结构·python·算法·leetcode·二叉树··递归