《算法笔记知识点记录》第三章——入门模拟(3)

简介: 《算法笔记知识点记录》第三章——入门模拟(3)

🥍1.6 字符串处理

字符串处理是考试中常见的问题,这种题型主要考察的是细心和代码能力,一定要注意边界条件的判断。 这种题最好的方法就是多想,多做,积累经验!!


问题 I: 【字符串】回文串


题目描述


读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。


输入格式:


一行字符串,长度不超过255。


输出格式:


一行字符串,长度不超过255。


样例输入


12321


样例输出


YES

解题思路


假设字符串str的下标从0开始,由于回文串正读和反读都一样所以只要遍历字符串的前一半,不需要读到len/2因为那是正中间的位置,如果全都相等就说明是回文串,否则说明不是。


参考代码


#include<cstdio>
#include<string.h>
#include<iostream>
using namespace std;
const int maxn = 256;
bool judge(char str[]){
    int len = strlen(str);
    for(int i = 0;i < len / 2;i++)
        if(str[i] != str[len - 1 - i])  return false;
    return true;
}
int main(){
    char str[maxn];
    while(cin.getline(str,256)){
        bool flag = judge(str);
        if(flag)    printf("YES\n");
        else        printf("NO\n");
    }
    return 0;
}


【PAT B1009】1009 说反话 (20 分)


题目描述


给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:


测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。


输出格式:


每个测试用例的输出占一行,输出倒序后的句子。


样例输入


Hello World Here I Come


样例输出


Come I Here World Hello

解题思路


使用cin.getline读入一行,用空格对字符串进行分割,并顺序保存到二维数组中。

注意点:


最后如果输出空格会造成错误。

由于PAT是单点测试,所以可以使用以下写法

参考代码


#include<cstdio>
int main(){
    int num = 0;
    char ans[90][90];
    while(scanf("%s",ans[num++]) != EOF)   num++;
    for(int i = num - 1;i >= 0;i--){
        printf("%s",ans[i]);
        if(i > 0)   printf(" ");
    }
    puts("");
    return 0;
}


解题思路2


有些地方可能是多点测试,那么就得老老实实拆分数组了。


参考代码


#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int main(){
    char str[90];
    while(cin.getline(str,90)){
        int len = strlen(str), row = 0, col = 0;
        char ans[90][90];
        //printf("%s %d",str,len);
        for(int i = 0;i < len;i++){
            if(str[i] != ' ')
                ans[row][col++] = str[i];
            else{
                ans[row][col] = '\0';
                row++;
                //printf("%d 1",col);
                col = 0;
            }
        }
        ans[row][col] = '\0';
        for(int i = row; i >= 0; i--){
            printf("%s",ans[i]);
            if(i > 0)   printf(" ");
        }
        puts("");
    }
    return 0;
}


🐳课后习题

今天的题目难度有点,但是是真滴多(量力而行,太多了,每章不带字母的必做,带字母自己选择),我写完会放题解,大家写完了可以在评论区打卡哟!题解我放评论区吧,这样不用修改文章。


对应章节 题目 相同链接

简单模拟 3.1小节——入门模拟->简单模拟

简单模拟 B1001 害死人不偿命的(3n+1)猜想 (15 分)

简单模拟 B1011 A+B 和 C (15 分)

简单模拟 B1016 部分A+B (15 分)

简单模拟 B1026 程序运行时间 (15 分)

简单模拟 B1046 划拳 (15 分)

简单模拟 B1008 数组元素循环右移问题 (20 分)

简单模拟 B1012 数字分类 (20 分)

简单模拟 B1018 锤子剪刀布 (20 分)

简单模拟 A1042 Shuffling Machine (20 分)

简单模拟 A1046 Shortest Distance (20 分)

简单模拟 A1065 A+B and C (64bit) (20 分)

简单模拟 B1010 一元多项式求导 (25 分)

简单模拟 A1002 A+B for Polynomials (25 分)

简单模拟 A1009 Product of Polynomials (25 分)

查找元素 3.2小节——入门模拟->查找元素

查找元素 B1041 考试座位号 (15 分)

查找元素 B1004 成绩排名 (20 分)

查找元素 B1028 人口普查 (20 分)

查找元素 B1032 挖掘机技术哪家强 (20 分)

查找元素 A1006 Sign In and Sign Out (25 分)

查找元素 A1011 World Cup Betting (20 分)

查找元素 A1036 Boys vs Girls (25 分)

图形输出 3.3小节——入门模拟->图形输出

图形输出 B1036 跟奥巴马一起编程 (15 分)

图形输出 B1027 打印沙漏 (20 分)

图形输出 A1031 Hello World for U (20 分)

日期处理 3.4小节——入门模拟->日期处理

进制转换 3.5小节——入门模拟->进制转换

进制转换 B1022 D进制的A+B (20 分)

进制转换 B1037 在霍格沃茨找零钱 (20 分)

进制转换 A1019 General Palindromic Number (20 分)

进制转换 A1027 Colors in Mars (20 分)

进制转换 A1058 A+B in Hogwarts (20 分)

字符串处理 3.6小节——入门模拟->字符串处理

字符串处理 B1006 换个格式输出整数 (15 分)

字符串处理 B1021 个位数统计 (15 分)

字符串处理 B1031 查验身份证 (15 分)

字符串处理 B1002 写出这个数 (20 分)

字符串处理 B1009 说反话 (20 分)

字符串处理 B1014 福尔摩斯的约会 (20 分) A1061 Dating (20 分)

字符串处理 B1024 科学计数法 (20 分) A1073 Scientific Notation (20 分)

字符串处理 B1048 数字加密 (20 分)

字符串处理 A1001 A+B Format (20 分)

字符串处理 A1005 Spell It Right (20 分)

字符串处理 A1035 Password (20 分)

字符串处理 A1077 Kuchiguse (20 分)

字符串处理 A1082 Read Number in Chinese (25 分)


相关文章
|
1月前
|
算法
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
【❤️算法笔记❤️】-每日一刷-19、删除链表的倒数第 N个结点
65 1
|
1月前
|
算法 索引
❤️算法笔记❤️-(每日一刷-141、环形链表)
❤️算法笔记❤️-(每日一刷-141、环形链表)
46 0
|
1月前
|
算法
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
【❤️算法笔记❤️】-(每日一刷-876、单链表的中点)
43 0
|
1月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
32 0
|
1月前
|
算法 API 计算机视觉
人脸识别笔记(一):通过yuface调包(参数量54K更快更小更准的算法) 来实现人脸识别
本文介绍了YuNet系列人脸检测算法的优化和使用,包括YuNet-s和YuNet-n,以及通过yuface库和onnx在不同场景下实现人脸检测的方法。
35 1
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-160、相交链表)
❤️算法笔记❤️-(每日一刷-160、相交链表)
17 1
|
1月前
|
存储 算法
动态规划算法学习一:DP的重要知识点、矩阵连乘算法
这篇文章是关于动态规划算法中矩阵连乘问题的详解,包括问题描述、最优子结构、重叠子问题、递归方法、备忘录方法和动态规划算法设计的步骤。
101 0
|
1月前
|
数据可视化 搜索推荐 Python
Leecode 刷题笔记之可视化六大排序算法:冒泡、快速、归并、插入、选择、桶排序
这篇文章是关于LeetCode刷题笔记,主要介绍了六大排序算法(冒泡、快速、归并、插入、选择、桶排序)的Python实现及其可视化过程。
14 0
|
1月前
|
算法
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
31 0