当前位置: 首页 > article >正文

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

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

// 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 不是。

// 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()遇到'\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博客
 


http://www.kler.cn/a/228421.html

相关文章:

  • 重学SpringBoot3-WebClient配置与使用详解
  • .NET开源的处理分布式事务的解决方案
  • Asp.Net Core 8.0 使用 Serilog 按日志级别写入日志文件的两种方式
  • 如何实现亿级用户在线状态统计?
  • 【C++】在线五子棋对战项目网页版
  • .NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
  • 计算机网络(复习资料)
  • EasyX图形库学习(二、文字输出)
  • vulhub中Apache APISIX Dashboard API权限绕过导致RCE(CVE-2021-45232)
  • 【STM32+HAL库+CubeMX】UART轮询收发、中断收发、DMA收发方法及空闲中断详解
  • 了解 WebSocket 和 TCP :有何不同
  • Qt/C++音视频开发65-切换声卡/选择音频输出设备/播放到不同的声音设备/声卡下拉框
  • Java智慧云智能教育平台
  • 云计算、Docker、K8S问题
  • JupyterLab 更换内核 使用 conda 虚拟环境
  • apk反编译修改教程系列---修改apk的默认颜色 布局颜色 手机电脑同步演示【十】
  • 面试经典150题——文本左右对齐(困难)
  • MagicVideo-V2:多阶段高保真视频生成框架
  • git将项目的某次签入遴选(Cherry-Pick)另一个项目
  • Open CASCADE学习|分割曲线
  • PyTorch、NCNN、CV::Mat三者张量的shape
  • springboot基于javaWEB的旅游推荐系统设计与实现+vue
  • Element UI+Spring Boot进行CRUD的实例
  • 【Android】240204 android studio build.gradle.kts APK名字带日期
  • LeetCode每日一题 | 1686. 石子游戏 VI
  • 工厂模式与抽象工厂模式