首页 > 其他分享 >华为机试HJ81 字符串字符匹配

华为机试HJ81 字符串字符匹配

时间:2024-12-02 18:31:34浏览次数:8  
标签:false int flag 华为 arrS 字符串 机试 true HJ81

首先看一下题

描述

判断短字符串S中的所有字符是否在长字符串T中全部出现。

请注意本题有多组样例输入。

数据范围: 1≤len(S),len(T)≤200 

进阶:时间复杂度: O(n) ,空间复杂度: O(n) 

输入描述:

输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。

输出描述:

如果短字符串的所有字符均在长字符串中出现过,则输出字符串"true"。否则输出字符串"false"。

示例1

输入:

bc
abc

输出:

true

说明:

其中abc含有bc,输出"true"

一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.判断短字符串S中的所有字符是否在长字符串T中全部出现。

2.请注意本题有多组样例输入。

3.数据范围:len(S)和len(T)大于等于1,小于等于200

4.进阶:时间复杂度:O(n),空间复杂度:O(n)

5.输入描述:输入两个字符串。第一个为短字符串,第二个为长字符串。两个字符串均由小写字母组成。

6.输出描述:如果短字符串的所有字符均在长字符串中出现过,则输出字符串“true”。否则输出字符串“false”。

二、解题思路

1.首先我们引入标准输入输出库、字符串处理库

#include <stdio.h>

#include <string.h>

#define MAXLEN 200

2.然后我们开始主程序

int main() {

3.我们定义两个字符串

char S[MAXLEN], T[MAXLEN];

while(scanf("%s\n%s", S, T) != EOF) {

int lenS = strlen(S);

int lenT = strlen(T);

int flag = 0;

for(int i = 0; i < lenT; i++) {

if(T[i] == S[0]) {

if(strcmp(T + i,S, LenS) == 0) {

flag = 1;

break;

}

}

}

if(flag == 1) printf("true\n");

else printf("false\n");

}

这里注意不是按顺序出现的也可以

我们定义一个数组,

bool arrS[26] = {0}

for(int i = 0; i < lenS; i++) {

arrS[S[i] - 'a'] = true;

}

for(int i = 0; i < lenT; i++ ){

arrS[T[i] - 'a'] = false;

}

int flag = 0;

for(int i = 0; i < 26; i++) {

if(arrS[i] == true) {

flag = 1;

break;

}

}

if(flag == 1) printf("false\n");

else printf("true\n");

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#define MAXLEN 200

int main() {
    char S[MAXLEN], T[MAXLEN];
    while (scanf("%s\n%s", S, T) != EOF) {
        int lenS = strlen(S);
        int lenT = strlen(T);
        int flag = 1;
        bool arrS[26] = {false};
        for(int i = 0; i < lenS; i++) {
            arrS[S[i] - 'a'] = true;
        }
        for(int i = 0; i < lenT; i++) {
            arrS[T[i] - 'a'] = false;
        }
        for(int i = 0; i < 26; i++) {
            if(arrS[i] == true) flag = 0;
        }
        if (flag == 1) printf("true\n");
        else printf("false\n");
    }
}

标签:false,int,flag,华为,arrS,字符串,机试,true,HJ81
From: https://blog.csdn.net/bingw0114/article/details/143578897

相关文章

  • 【HarmonyOS开发】华为商城应用页面实验示例解析(ArkTS实战解析)
    一.实验背景本次项目为华为云鸿蒙应用入门级开发者认证的实验项目,借此来巩固对ArkTS的学习。实验源地址开发者云实验_云实验KooLabs_在线实验_上云实践_云计算实验_AI实验_华为云官方实验平台-华为云 实验目标本实验一共需要完成以下三个部分的任务:本实验将模拟制作......
  • 在ensp中华为设备怎么配置静态路由
    1.环境搭建要求:AR1-AR2-AR4为主路由  AR1-AR2-AR4为备路由 主路由优先级为60,备份路由优先级为70 数值越大优先级越低在静态路由里面2.设备配置1.IP地址配置2.配置环回口地址3.静态路由配置在R1上配置去往R2环回口地址和R4的路由在R2上配置去网R1R4......
  • 华为手机卡死了屏幕动不了关机也关不了
    如果你的华为手机卡死了,屏幕动不了,关机也关不了,可以尝试以下方法:强制重启:长按电源键10秒以上(EMUI11.0机型需要同时按住音量下键和电源键10秒以上),直到手机黑屏再松开,正常的卡死都可以这样关机123。进入安全模式:如果手机无法正常关机,可以尝试进入安全模式。不同型号的华......
  • 【牛客训练记录】"华为杯"2024年广东工业大学新生赛(同步赛)
    训练情况赛后反思组合数学还得加练,J题奇妙的乘法逆元预处理,开个unordered_map记忆化就过了?!,E题太头铁了,异或不算就直接交,F题又是急到没取模就直接交。A题字符串Tomori后面补上Haruhikage。#include<bits/stdc++.h>//#defineintlonglong#defineendl'\n'usingna......
  • 2024年华为OD机试真题-矩阵扩散-C++-OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述:存在一个m*n的二维数......
  • 手把手教你华为鸿蒙开发之第五节
    华为鸿蒙开发:条件语句和分支逻辑引言在编程中,根据不同的条件执行不同的代码块是常见的需求。华为鸿蒙操作系统的开发同样涉及到这些基础的控制流语句。本文将通过DevEcoStudio介绍鸿蒙开发中的条件语句和分支逻辑,包括if语句、switch语句和三元条件表达式,以及如何在UI中......
  • 手把手教你华为鸿蒙开发之第四节
    华为鸿蒙开发:数组操作基础引言在华为鸿蒙操作系统的开发中,数组是一种常用的数据结构,用于存储和管理一系列有序的元素。本文将通过DevEcoStudio介绍数组的基本操作,包括数组的定义、取值、修改、添加和删除元素,以及使用splice方法在任意位置进行更复杂的数组操作。数组的基......
  • 华为鸿蒙开发基础第三节
    华为鸿蒙开发基础第三节:一元运算符、比较运算符、逻辑运算符及运算符优先级引言在华为鸿蒙操作系统的开发中,DevEcoStudio是官方推荐的集成开发环境(IDE),它提供了代码编写、调试、打包和签名等一系列开发功能。本文将结合DevEcoStudio,详细介绍鸿蒙应用开发中常用的一元运算符......
  • 华为OD机试真题-ai面板识别-2024年OD统一考试(E卷)
    最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,发现新题及时跟新。题目描述AI识别到面板上有N(1......
  • 华为OD2024机试最新E卷题库-(A+B+C+D+E)
    在这个精心策划的专栏中,我们聚焦于华为OD2024机试的最新E卷题库,涵盖JS、C、C++、Java与Python五大编程语言,旨在为挑战者提供全面而深入的备战资源。这里不仅有精选的实战题目,还有详尽的解题思路与代码实现,帮助你掌握核心算法,理解数据结构,提升编程技巧。以下是每个卷宗的详细,可......