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博客

相关推荐
owde42 分钟前
顺序容器 -list双向链表
数据结构·c++·链表·list
第404块砖头1 小时前
分享宝藏之List转Markdown
数据结构·list
hyshhhh1 小时前
【算法岗面试题】深度学习中如何防止过拟合?
网络·人工智能·深度学习·神经网络·算法·计算机视觉
蒙奇D索大1 小时前
【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
c语言·数据结构·考研·改行学it
A旧城以西2 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
杉之2 小时前
选择排序笔记
java·算法·排序算法
Naive_72 小时前
蓝桥杯准备(前缀和差分)
java·职场和发展·蓝桥杯
烂蜻蜓2 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
OYangxf2 小时前
图论----拓扑排序
算法·图论
我要昵称干什么2 小时前
基于S函数的simulink仿真
人工智能·算法