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

字符串训练赛

A题 大写单词

题目链接 https://nyoj.online/problem/CF-281A

大写第一个单词

#include <stdio.h>
char a[1050];

int main()
{
    scanf("%s",a);//字符串不需要取地址符
    if(a[0]>='a') a[0]-=('a'-'A');//转化为大写
    printf("%s",a);
    return 0;
}

B题 乘1000

题目链接 https://nyoj.online/problem/NYOJ-1610

这题用longlong存会爆数据, 得用字符串输出

#include <stdio.h>
char str[50];

int main()
{
    scanf("%s",str);
    printf("%s000",str);
    return 0;
}

C题 对不对

题目链接 https://nyoj.online/problem/CF-1703A

注意到很多同学直接打表写法(自己手动吧全部可能性写出来)粗心写错了

这题直接把字母转化成小写在判断最好

#include <stdio.h>
char str[50];

int main()
{
   	int _;
    scanf("%d",&_);
    while(_--)
    {
        scanf("%s",str);
        for(int i=0;i<3;i++)
            if(str[i]>='a') str[i]-=('a'-'A');
        if(strcmp("YES",str)==0) puts("YES");
        else puts("NO");
    }
    return 0;
}

D题 我真的想不起来标题了

题目链接 https://nyoj.online/problem/NYOJ-1612

使用%c的时候记得在输入前使用getchar()把换行符吃掉, 不然会让%c读取你的换行符

#include <stdio.h>
char str[150];
char cnt;
int n;

int main()
{
    scanf("%d%s",&n,str);
    getchar();//吃换行符
    scanf("%c",&cnt);
    for(int i=0;i<n;i++)
        if(str[i]==cnt) str[i]='#';
   	puts(str);
    return 0;
}

E题 翻转吧字符串。

题目链接 https://nyoj.online/problem/NYOJ-1613

用for反着遍历输出即可

#include <stdio.h>
char str[150];
int n;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=n-1;i>=0;i--)
        printf("%c",str[i]);
    return 0;
}

F题 回文串

题目链接 https://nyoj.online/problem/NYOJ-1614

利用了计算机除法向下取整的机制(忽略小数位)使奇偶长度字符串处理一致, 之后判断是否相等, 使用flag记录回文即可

#include <stdio.h>
char str[150];
int n,flag;//全局变量在堆中定义, 自动初始化为0

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i<n/2;i++) 
        if(str[i]!=str[n-i-1])
        {
            flag=1;
            break;
        }
    puts(flag?"NO":"YES");
    /*
    相当于
    if(flag==1) puts("YES");
    else puts("NO");
    */
    return 0;
}

G题 lklklk = k

题目链接 https://nyoj.online/problem/NYOJ-1615

使用了哈希表的思想, hash[ str[i] ]记录了str[i]这个字母出现了几次, 最后使i从'a'到'z'遍历搜索最大值, 输出即可

#include <stdio.h>
char str[150];
int n,hash[150],mmax,ans;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i<n;i++)
        hash[str[i]]++;
    for(int i='a';i<='z';i++)
        if(mmax<hash[i])
        {
            mmax=hash[i];
            ans=i;
        }
    printf("%c",(char)ans);
        
    return 0;
}

H题 快来教教why学长用9键!

题目链接 https://nyoj.online/problem/NYOJ-1616

这题巧用switch打表会比if-else语句简便很多

#include <stdio.h>
#include <string.h>
char a[50];

int main()
{
    scanf("%s",a);
    int i=0;
    while(i<strlen(a))
    {
        switch(a[i])
        {
            case 'a':
            case 'b':
            case 'c':printf("2 %d\n",a[i]-'a'+1);break;
                
            case 'd':
            case 'e':
            case 'f':printf("3 %d\n",a[i]-'d'+1);break;
                
            case 'g':
            case 'h':
            case 'i':printf("4 %d\n",a[i]-'g'+1);break;
                
            case 'j':
            case 'k':
            case 'l':printf("5 %d\n",a[i]-'j'+1);break;
                
            case 'm':
            case 'n':
            case 'o':printf("6 %d\n",a[i]-'m'+1);break;
                
            case 'p':
            case 'q':
            case 'r':
            case 's':printf("7 %d\n",a[i]-'p'+1);break;
                
            case 't':
            case 'u':
            case 'v':printf("8 %d\n",a[i]-'t'+1);break;
                
            case 'w':
            case 'x':
            case 'y':
            case 'z':printf("9 %d\n",a[i]-'w'+1);break;
        }
        i++;
    }
    
    return 0;
}

I题 输出亲朋字符串

题目链接 https://nyoj.online/problem/NYOJ-1608

这题注意输入是有空格的, 这题的数据空格也必须要被处理, 只有使用gets才能读入空格

c++中是使用fgets

#include <stdio.h>
#include <string.h>
char str[150];
int n;

int main()
{
    gets(str);//c++中为fgets
    n=strlen(str);
    for(int i=0;i<n-1;i++)
        printf("%c",str[i]+str[i+1]);
   	printf("%c",str[0]+str[n-1]);
    return 0;
}

J题 rap序列(防ak?)

题目链接 https://nyoj.online/problem/NYOJ-1611

这题并不是简简单单的找有多少个r多少个a和p, 而是寻找有多少个rap组合

题解见注释

#include <stdio.h>
char str[150];
int n,r,ra,rap;

int main()
{
    scanf("%d%s",&n,str);
    for(int i=0;i<n;i++)
    {
        r+=str[i]=='r';//如果str=='r'判断式返回值为1, 否则为0  此处查找有多少种r
        if(str[i]=='a') ra+=r;//查找有多少种ra组合
        if(str[i]=='p') rap+=ra;//有多少个p能和前面的ra组合成rap
    }
   	printf("%d",rap);
    return 0;
}

除此之外还可以三重循环暴力查找, 这题数据不大, 完全能暴力

#include <stdio.h>

int main()
{
	int n,cnt=0;
    char in[1000];
    scanf("%d%s",&n,in);
    int len=strlen(in);
    for(int i=0;i<len;i++)
    {
        if(in[i]=='r')
        {
            for(int j=i+1;j<len;j++)
            {
                if(in[j]=='a')
                {
                    for(int k=j+1;k<len;k++)
                    {
                        if(in[k]=='p')
                        {
                            cnt++;
                        }
                    }
                }
            }
        }
    }
    printf("%d",cnt);
	return 0;
}

相关文章:

  • Android性能优化之【启动优化】
  • Java 集合与数据结构 · 接口 interfaces ·Collection 常用方法 · Map 常用方法
  • 面试面不过?大厂面试官是这样说的···
  • 秒懂YUV444/YUV422/YUV420计算(二十九)
  • 模方重大更新,支持3ds max、新版大疆数据、匀色、多原点数据等
  • 论文教程之 138位科研工作者分享如何(认真地)阅读一篇科学论文
  • MVC、MVP、MVVM三种模式的介绍及区别
  • 注意力机制综述学习记录
  • 数据结构c语言版第二版(严蔚敏)第三章笔记
  • 羊了个羊,但是Python简(li)单(pu)版
  • 【软件测试】测试用例的设计方法
  • 二叉树的遍历问题
  • FPGA/HDL 人员开发利器-TerosHDL(开源 IDE)
  • 《谁动了我的奶酪》阅读笔记
  • 2023秋招--腾讯天美--游戏客户端--一面面经
  • 【个人向】《HTTP图解》阅后小结
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Hexo+码云+git快速搭建免费的静态Blog
  • javascript面向对象之创建对象
  • Making An Indicator With Pure CSS
  • spring security oauth2 password授权模式
  • Vultr 教程目录
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 讲清楚之javascript作用域
  • 精彩代码 vue.js
  • 前端面试之CSS3新特性
  • 推荐一个React的管理后台框架
  • 一天一个设计模式之JS实现——适配器模式
  • 用quicker-worker.js轻松跑一个大数据遍历
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • #宝哥教你#查看jquery绑定的事件函数
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (排序详解之 堆排序)
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ***测试-HTTP方法
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .aanva
  • .net 8 发布了,试下微软最近强推的MAUI
  • .net core IResultFilter 的 OnResultExecuted和OnResultExecuting的区别
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .net安装_还在用第三方安装.NET?Win10自带.NET3.5安装
  • .NET开发者必备的11款免费工具
  • .NET与 java通用的3DES加密解密方法
  • @property python知乎_Python3基础之:property
  • @RequestMapping用法详解
  • @Transactional 详解
  • [ C++ ] STL---仿函数与priority_queue
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [20170705]diff比较执行结果的内容.txt
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票