290. 单词规律

news2024/11/27 16:49:46

290. 单词规律

在这里插入图片描述


C代码:别人手搓的

bool wordPattern(char * pattern, char * s){
    char arr[301][3001];
    char *p = strtok(s, " ");
    int pos = 0;
    while(p != NULL) {
        sprintf(arr[pos++], "%s", p);
        p = strtok(NULL, " ");
    }
    int len = strlen(pattern);
    if(len != pos) {
        return false;
    }

    for(int i = 0; i < len; i++) {
        for(int j = i + 1; j < len; j++) {
                int re = strcmp(&arr[i][0], &arr[j][0]);
                if((pattern[i] == pattern[j] && re != 0) || (pattern[i] != pattern[j] && re == 0)) {  // 双向绑定!
                    return false;
                }
        }
    }
    return true;
}

C代码:自己手搓的

// 左边结构是对称的
// 应该是根据patttern去查找字符串,再与s中的字符串进行对比;双向绑定!
// "abba"                "aaaa"
// "dog dog dog dog"     "dog cat cat dog"

typedef struct {
    char ch;
    char* str;
    UT_hash_handle hh;
} HashTable;

HashTable* head1;
HashTable* head2;

void addHash1(char * pattern, char** arr, int len1) {
    HashTable* out = NULL;
    for(int i = 0; i < len1 / 2; ++i) {
        HASH_FIND(hh, head1, &pattern[i], sizeof(char), out);
        if (NULL == out) {
            out = (HashTable*)malloc(sizeof(HashTable));
            out->ch = pattern[i];
            out->str = arr[i];
            HASH_ADD(hh, head1, ch, sizeof(char), out);
        }
    }
}

void addHash2(char * pattern, char** arr, int len1) {
    HashTable* out = NULL;
    for(int i = 0; i < len1 / 2; ++i) {
        out = NULL;
        HASH_FIND_STR(head2, &arr[i][0], out);
        if (NULL == out) {
            out = (HashTable*)malloc(sizeof(HashTable));
            out->ch = pattern[i];
            out->str = arr[i];
            HASH_ADD_STR(head2, str, out);
        }
    }
}

bool wordPattern(char * pattern, char * s){
    int len1 = strlen(pattern);
    int len2 = strlen(s);
    // 将s中的字符串放入数组中
    char** arr = (char**)malloc(sizeof(char*) * 1501);
    int arrTop = 0;
    char* str = strtok(s, " ");
    while (str != NULL) {
        arr[arrTop++] = str;
        str = strtok(NULL, " "); 
    }
    if (len1 != arrTop) {
        return false;
    }
    // 放入hash
    head1 = NULL;
    head2 = NULL;
    addHash1(pattern, arr, len1);
    addHash2(pattern, arr, len1);

    // 进行读取、判断
    HashTable* out1 = NULL;
    HashTable* out2 = NULL;
    for(int i = len1 / 2; i < len1; ++i) {
        HASH_FIND(hh, head1, &pattern[i], sizeof(char), out1);
        HASH_FIND_STR(head2, &arr[i][0], out2);
        if (NULL != out1 && strcmp(out1->str, arr[i]) != 0 || NULL != out2 && out2->ch != pattern[i]) {
            return false;
        }
    }
    return true;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/646975.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux环境安装Jdk图文步骤

准备工作&#xff1a; a、jdk安装包&#xff1a;百度网盘 请输入提取码&#xff0c;提取码&#xff1a;jdk8 b、远程工具&#xff0c;xshell&#xff0c;&#xff0c;electerm&#xff0c;&#xff0c;MobaXterm&#xff0c;&#xff0c;fxp&#xff0c;docker&#xff0c;宝…

软件测试V、W和H模型的优缺点汇总,零基础必看哦

目录 V模型 W模型 H模型 总结&#xff1a; 软件测试有三种模型&#xff0c;分别是V模型&#xff0c;W模型和H模型。每种模型都有自己的优点和缺点。 V模型 V模型如下图所示&#xff1a; V模型的优点 V模型明确地标识出了在开发过程中一般应完成的测试级别&#xff0c;以及…

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

STM32-HAL库串口DMA空闲中断的正确使用方式解析SBUS信号 一. 问题描述二. 方法一——使用HAL_UART_Receive_DMA三. 方法二——使用HAL_UARTEx_ReceiveToIdle_DMA四. 方法三——使用HAL_UARTEx_ReceiveToIdle_IT&#xff08;不使用DMA&#xff09;五. 总结 一. 问题描述 能够点…

java springboot整合MyBatis-Plus 多用点Plus支持一下国人开发的东西吧

文章java springboot整合MyBatis做数据库查询操作讲述了boot项目整合MyBatis的操作方法 但现在就还有一个 MyBatis-Plus Plus是国内整合的一个技术 国内的很多人会喜欢用 特别是一些中小型公司 他们用着会比较舒服 好 然后我们打开idea 创建一个项目 选择 Spring Initializr…

(九)CSharp-数组

一、矩形数组 1、访问数组元素 class Program{static void Main(string[] args){int[] intArr1 new int[15];intArr1[2] 10;int var1 intArr1[2];int[,] intArr2 new int[5, 10];intArr2[2, 3] 7;int var2 intArr2[2, 3];int[] myIntArray new int[4];for (int i 0; i…

Git 报错 Updates were rejected because the remote contains work that you do

目录 Git 报错 Updates were rejected because the remote contains work that you do 1、命令行出现这种情况 2、idea出现同样的报错&#xff0c;解决方式同上 Git 报错 Updates were rejected because the remote contains work that you do 这个报错实在是让我受不了了&…

Kendo UI for jQuery---03.组件___网格---05.编辑---01.概述

编辑概述 编辑是剑道 UI 网格的一项基本功能&#xff0c;它允许您操作其数据的呈现方式。 网格提供以下编辑模式&#xff1a; 批量编辑 内联编辑 弹出窗口编辑 自定义编辑开始 要启用编辑&#xff1a; 熟悉剑道UI中的常见编辑概念 配置网格的数据源 通过配置定义字段schem…

PaddleOCR Windows下配置环境并测试

目录 1.PaddleOCR 介绍 1.2 PaddleOCR支持模型介绍 2.环境配置 3.PaddleOCR源码 1.PaddleOCR 介绍 PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库&#xff0c;助力开发者训练出更好的模型&#xff0c;并应用落地。 支持多种OCR相关前沿算法&#xff0c;在此基础上打…

简单的一批的DockerFile构建(内附超详细docker学习笔记)

目录 介绍 DockerFile常用保留字指令 演示自定义构建java8版本centos docker专用学习笔记 超全 介绍 总结: 从应用软件的角度来看&#xff0c;Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段&#xff0c; * Dockerfile是软件的原材料 * Docker镜像是软件…

SpringBoot参数校验入门

一、添加依赖 <!--参数校验--> <dependency><groupId>org.hibernate.validator</groupId><artifactId>hibernate-validator</artifactId> </dependency> <!--lombok--> <dependency><groupId>org.projectlombok&…

few-shot object counting论文汇总

文章目录 2021OBJECT COUNTING: YOU ONLY NEED TO LOOK AT ONE 2022CounTR: Transformer-based Generalised Visual CountingFew-shot Object Counting with Similarity-Aware Feature Enhancement 2023CAN SAM COUNT ANYTHING? AN EMPIRICAL STUDY ON SAM COUNTING 2021 OBJ…

【MSP432电机驱动学习】TB6612带稳压电机驱动模块、MG310电机、13线霍尔编码器

所用控制板型号&#xff1a;MSP432P401r 今日终于得以继续我的电赛小车速通之路&#xff1a; 苏轼云 “ 素面常嫌粉涴 &#xff0c; 洗妆不褪朱红。 ” 这告诫我们不能只注重在表面粉饰虚伪的自己&#xff0c;要像梅花一样&#xff0c;不断磨砺自己的内在~ 后半句是 “…

广告经济学与垄断竞争分析

产品与广告 产品的分类&#xff1a; 搜寻品&#xff1a;消费者在购买商品之前就可以知道其特征的产品经验品&#xff1a;只能够在使用后才能确认其特征的产品信任品&#xff1a;产品的质量即使在消费之后仍然不能确定&#xff0c;例如医学和法律服务 广告的分类&#xff1a;…

【C++】在线编译器推荐,让你随时随地编写代码

▒ 目录 ▒ &#x1f6eb; 问题描述环境 1️⃣ 支持调试网站Repl.itOnlineGDB 2️⃣ 不支持调试网站Wandboxjson.cnjdoodletutorialspointcppshellideonecoliruonline-ide 3️⃣ 性能分析网站Quick C BenchmarkCompare C Builds 4️⃣ 其它C Insights&#xff08;学习模板、C11…

Java阶段四Day04

Java阶段四Day04 文章目录 Java阶段四Day04关于SLF4j日志框架使用Sql注解关于DAO架构关于Service关于异常 关于SLF4j日志框架 在开发实践中&#xff0c;通常禁止使用System.out.println()这种语句输出信息&#xff0c;主要原因有&#xff1a; 输出效率低下&#xff0c;特别是字…

A fight among three “三国”混战 | 经济学人20230520版社论双语精翻

《经济学人》2023年5月20日封面&#xff08;社论&#xff09;文章精翻&#xff1a;《全球支付系统的“三国”混战》&#xff08;A fight among three&#xff09; A fight among three “三国”混战 The fight over the future of global payments 全球支付的未来之争 Digital …

函数重载分析

函数重载 (Function Overload) 用同一个函数名定义不同的函数 当函数名和不同的参数搭配时函数的含义不同 函数重载至少满足下面的一个条件&#xff1a; 参数个数不同 参数类型不同 参数顺序不同 上面的两个函数可以构成重载函数吗&#xff1f; 当默认参数遇上函数重载会发…

分布式系统概念和设计——分布式多媒体系统

分布式系统概念和设计 分布式多媒体系统 QoS QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;是一种网络管理和控制技术&#xff0c;可以对网络流量进行管理和调度&#xff0c;以确保网络对不同类型的数据流的传输可以提供适当的带宽、传输延迟、抖动和可…

《交通规划》——最短路分配方法

《交通规划》——最短路分配方法 说明&#xff1a;下面内容&#xff0c;将用python、networkx实现刘博航、杜胜品主编的《交通规划》P198页的例题&#xff0c;主要是实现最短路径分配方法。 1. 题目描述如下&#xff1a; 2. networkx构建网络 import networkx as nx import …

Spring6 面向切面(AOP)

文章目录 1、场景模拟1.1、声明接口1.2、创建实现类1.3、创建带日志功能的实现类1.4、隐藏问题 2、代理模式2.1、概念2.2、静态代理2.3、动态代理2.4、测试 3、AOP概念及相关术语3.1、概述3.2、相关术语①横切关注点②通知&#xff08;增强&#xff09;③切面④目标⑤代理⑥连接…