Run ID 作者 问题 语言 测评结果 Time Memory 代码长度 提交时间
115685 小徐老师 22数字最多的字符串 C++ Accepted 1 MS 268 KB 2742 2025-04-02 21:08:58

Tests(10/10):


Code:

#include <bits/stdc++.h> using namespace std; char s1[1000 + 5], s2[1000 + 5]; /*+ 5 是因为我们的字符串长度最多是1000的 +5 长度最多可以到达1005 在我们遍历字符串中 如果不小心越界了 越界了1或者2个位置 那么会有空余的空间去处理这一种情况 代替了 一个if语句的判断 留一个空间 水杯你会不会倒满*/ int num1, num2; int main() { /*1. cin 2. gets*/ cin >> s1 >> s2; //int num1 = 0, num2 = 0; /*遍历数组 -> for(int i = 0; i < n; ++i) -> 因为数组只有n个数 -> 0 - n-1 -> a[0] - a[n - 1] -> 遍历字符串 -> 从字符串的第一个位置到 最后一个位置 -> (长度 - 1) 说了15次 strlen 说了 4-5次 我说让大家给字符串函数重要性排一个名次 */ for(int i = 0; i < strlen(s1); ++i) //遍历字符串 基本都要用这个 AC { //什么叫遍历字符串 if(s1[i] >= '0' && s1[i] <= '9') num1 = num1 + 1; /*统计数字出现多少次 s1还是s2 它都是字符串 字符出现了数字这种情况 if判断语句 '0' '1' '2' ... '9' -> if(s1[i] == '0' || s1[i] == '1' || ... || s1[i] == '9') num1 = num1 + 1;*/ } /*1. for循环-> i 从零位置到长度-1 -> < 长度 或者 <= 长度 - 1 char 数组里面是 strlen string里面是 size 2. 在花括号里面进行题目有关的操作*/ for(int i = 0; i < strlen(s2); ++i) //遍历字符串 { if(s2[i] >= '0' && s2[i] <= '9') num2 = num2 + 1; } if(num1 > num2) //第一个字符串数字更多 { //先输出第二个字符串,倒过来输出->for循环逆序输出 0 - 长度-1 长度-1 - 0 for(int i = strlen(s2) - 1; i >= 0; --i) cout << s2[i]; cout << s1[num1 - 1] << endl; /*代换-> 下标:0 位置是:1 1 2 2 3 ? num1 多少的时候是num1 s1中下标为0的字符第一个字符 num1有多少个数字 我们需要输出num1位置的字符 下标*/ /*下标和位置关系 下标 + 1 = 位置 0号 1号 2号 3号 编程考试 0号 出题的 1号考了第一名 1 -> 一 2号考了第二名 2 -> 3号考了第三名 0号 第一名 0 - 1 1号 第二名 1 - 2*/ } else //第二个字符串数字更多 num1 <= num2 num1 == num2 存在吗? { for(int i = strlen(s1) - 1; i >= 0; --i) cout << s1[i]; cout << s2[num2 - 1] << endl; } return 0; }