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

相关推荐
计算机小白一个37 分钟前
蓝桥杯 Java B 组之背包问题、最长递增子序列(LIS)
java·数据结构·蓝桥杯
SuperW43 分钟前
蓝桥杯——lcd显示
职场和发展·蓝桥杯
MZWeiei1 小时前
PTA:运用顺序表实现多项式相加
算法
卑微的小鬼1 小时前
数据库使用B+树的原因
数据结构·b树
GISer_Jing1 小时前
Javascript排序算法(冒泡排序、快速排序、选择排序、堆排序、插入排序、希尔排序)详解
javascript·算法·排序算法
cookies_s_s1 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法
不想编程小谭2 小时前
力扣LeetCode: 2506 统计相似字符串对的数目
c++·算法·leetcode
水蓝烟雨2 小时前
[HOT 100] 2187. 完成旅途的最少时间
算法·hot 100
醉城夜风~3 小时前
[数据结构]双链表详解
数据结构
菜鸟一枚在这3 小时前
深度解析建造者模式:复杂对象构建的优雅之道
java·开发语言·算法