CSDN编程竞赛-第六期(下)
CSDN编程竞赛报名地址:https://edu.csdn.net/contest/detail/16
努力是为了让自己不平庸:
前言/背景
四道题都是相关字符串的,思路很好想,但是需要熟练使用,不能有小错误。
大赛简介
有很多的实体奖励
参赛流程
活动时间:9月8日-21日(竞赛时间截止9.18)
竞赛考试时间:9月18日 8:30-11:00(作答时间2小时)
获奖名单公布:9月23日,在本页面公布获奖名单链接
获奖用户信息收集:9月27日
奖品发放:9月30日后7个工作日内
参赛经历
早起,提前洗漱完毕,等待竞赛开始就直接进入
三、收件邮箱
题目
已知字符串str,str表示邮箱的不标准格式。 其中”.”会被记录成”dot”,”@”记录成”at”。 写一个程序将str转化成可用 的邮箱格式。(可用格式中字符串中除了开头结尾所有”dot”,都会被转换,”at”只会被转化一次,开头结尾的不转化)
解题思路
因为是转换网站字符串,所以很容易就想到了java字符串里的contains函数和replace函数
先判断字符串是否含有“at”如果有就用replace把at替换为“@”,在判断是否含有“dot”如果有就用replace把at替换为“.”然后输出str
代码
package text;
import java.util.Scanner;
public class Three {
public static void main(String[] args) {
String str;
Scanner sc=new Scanner(System.in);
str=sc.next();
if(str.contains("at")){
str=str.replace("at","@");
}
if(str.contains("dot")){
str=str.replace("dot",".");
}
System.out.println(str);
}
}
运行结果
四、最长递增的区间长度
题目
给一个无序数组,求最长递增的区间长度。如:[5,2,3,8,1,9] 最长区间 2,3,8 长度为 3
解题思路
先定义一个数组将输入的数存入数组里,因为是递增,计算前一个数比后一个数比较小的次数,每次循环计数加1,如果前一个数比后一个数比较大,则结束本次计算,拿计数和结果比较如果比它大就把计数赋值结果,重新开始计数,直到数组轮完,因为我们计算的是比较次数,题中要的是长度,所以在输出的时候结果还需要加1
代码
#include <stdio.h>
#include <string.h>
int main() {
int n;
int count = 0;
int result = 0;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
count++;
if (a[i] > a[i + 1])
count = 0;
if (count > result) {
result = count;
}
}
printf("%d", result + 1);
return 0;
}
运行结果
经验心得
要多多练习,多多刷题,熟练的使用算法。
总结
本次竞赛重在练习字符串,希望大家熟练掌握字符串的用法