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

相关推荐
123_不打狼7 分钟前
AE(自编码器)与 VAE(变分自编码器)核心区别:原理、目标与应用
深度学习·算法·机器学习·vae
Anastasiozzzz10 分钟前
LeetCode hot100 45 跳跃游戏2
算法·leetcode·游戏
近津薪荼12 分钟前
递归专题(3)——反转链表
数据结构·c++·学习·算法·链表
Tisfy15 分钟前
LeetCode 3013.将数组分成最小总代价的子数组 II:两个堆维护k-1小 + 滑动窗口
算法·leetcode·题解·优先队列··有序集合·滑动窗口
坚持就完事了17 分钟前
Java算法:递归
算法
senijusene20 分钟前
数据结构与算法:完全二叉树和非完全二叉数的各种详细操作以及哈希表的简单应用
数据结构·算法·链表
季明洵1 小时前
反转字符串、反转字符串II、反转字符串中的单词
java·数据结构·算法·leetcode·字符串
2401_841495641 小时前
【Python高级编程】近似串匹配
python·算法·动态规划·字符串·数组·时间复杂度·空间复杂度
lingggggaaaa1 小时前
安全工具篇&魔改二开&CheckSum8算法&Beacon密钥&Stager流量&生成机制
学习·算法·安全·web安全·网络安全·免杀对抗
Python+JAVA+大数据1 小时前
SQL玩出算法竞赛高度!郑凌云数独算法:递归CTE+位运算DFS回溯全解析
数据库·sql·算法·搜索引擎·深度优先·dfs