1684. 统计一致字符串的数目

news/2025/1/1 13:17:19/

题目:
给你一个由不同字符组成的字符串 allowed 和一个字符串数组 words 。如果一个字符串的每一个字符都在 allowed 中,就称这个字符串是 一致字符串 。

请你返回 words 数组中 一致字符串 的数目。

示例 1:

输入:allowed = “ab”, words = [“ad”,“bd”,“aaab”,“baa”,“badab”]
输出:2
解释:字符串 “aaab” 和 “baa” 都是一致字符串,因为它们只包含字符 ‘a’ 和 ‘b’ 。
示例 2:

输入:allowed = “abc”, words = [“a”,“b”,“c”,“ab”,“ac”,“bc”,“abc”]
输出:7
解释:所有字符串都是一致的。
示例 3:

输入:allowed = “cad”, words = [“cc”,“acd”,“b”,“ba”,“bac”,“bad”,“ac”,“d”]
输出:4
解释:字符串 “cc”,“acd”,“ac” 和 “d” 是一致字符串。

提示:

1 <= words.length <= 104
1 <= allowed.length <= 26
1 <= words[i].length <= 10
allowed 中的字符 互不相同 。
words[i] 和 allowed 只包含小写英文字母。

来源:力扣(LeetCode)

方法:
1.使用数组记录字符串和子串中 元素出现的个数,并比较两者出现次数,满足要求则 +1。

2.使用位运算,对于字符串中的字母,最多只要 26 个,一个int型存在 32 位,可以记录 32 个状态,所有可以使用位运算,每一位代表一个元素的出现,和前面一样,只是数组换成了int型数据

c++:

class Solution {
public:int countConsistentStrings(string allowed, vector<string>& words) {vector<int> cnt(26); for (char &c : allowed) {cnt[c - 'a']++;}int res = 0;for (string &word : words) {bool ok = true;for (char &c : word) {if (cnt[c - 'a'] == 0) {ok = false;break;}}if (ok) res++;}return res;}
};

c语言代码实现:


int countConsistentStrings(char * allowed, char ** words, int wordsSize){bool all[26] = {0};bool word[26] = {0};for (int i = 0; i < strlen(allowed); i++) {all[allowed[i] - 'a'] = true;}int count = 0;for (int i = 0; i < wordsSize; i++) {//遍历数组memset(word, 0, sizeof(word));for (int j = 0; j < strlen(words[i]); j++) {//记录每一个子串元素的种类word[words[i][j] - 'a'] = true;}bool flag = true;for (int j = 0; j < 26; j++) {//比较当前子串与字符串if(word[j] == true && all[j] == false)//不满足要求{flag = false;break;}}if(flag)//满足要求+1count++;}return count;
}

简单介绍一下memset函数:
memset函数,我们一起来看一下,以下是msdn上对memset的阐述:
memset
Sets buffers to a specified character.
将缓冲区设定为指定字符。

void *memset( void *dest, int c, size_t count );
有3个参数

Routine Required Header Compatibility
需要的头文件
memset <memory.h> or <string.h> ANSI, Win 95, Win NT

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version

Return Value

memset returns the value of dest.

Parameters

dest

Pointer to destination

c

Character to set

count

Number of characters

Remarks

The memset function sets the first count bytes of dest to the character c.

Example
测试用例

/* MEMSET.C: This program uses memset to

  • set the first four bytes of buffer to “*”.
    */

#include <memory.h>
#include <stdio.h>

void main( void )
{
char buffer[] = “This is a test of the memset function”;

printf( “Before: %s\n”, buffer );
memset( buffer, ‘*’, 4 );
printf( “After: %s\n”, buffer );
}

Output

Before: This is a test of the memset function
After: **** is a test of the memset function

Buffer Manipulation Routines

See Also _memccpy, memchr, memcmp, memcpy, _strnset


http://www.ppmy.cn/news/72267.html

相关文章

Python实验二 程序流程控制

7-1 sdut-sel-10 直角坐标系象限判断 while(1):try:n, m map(int, input().split())if n > 0 and m > 0 :print(1)elif n < 0 and m > 0 :print(2)elif n < 0 and m < 0 :print(3)elif n > 0 and m < 0 :print(4)except:break 7-2 sdut-sel-2 汽车超…

探索Vue的组件世界-组件复用

目录 Mixin【混入】 缺陷 HOC&#xff08;higher order component&#xff09;【高阶组件】 相比较Mixin的优点&#xff1a; 不足&#xff1a; Renderless组件【函数式组件&#xff0c;无渲染组件&#xff0c;Vue社区使用比较多的一种业务复用模式】 优点&#xff1a; M…

网上书城系统的设计与实现

背景 设计一个网上书城管理系统&#xff0c;通过这个系统能够满足网上书城的管理及用户的图书信息管理及购物功能。系统的主要功能包括&#xff1a;首页、个人中心、用户管理、图书类型管理、图书分类管理、图书信息管理、我的收藏管理、系统管理、订单管理等功能。 管理员可…

UOS服务器系统配置bond

一、Bond介绍 bond可以将多个网卡绑定到一起&#xff0c;可以让两个或多个接口作为一个接口&#xff0c;同时提高带宽&#xff0c;并提供网络链路的冗余&#xff0c;当有其中一块网卡故障的时候&#xff0c;不会中断服务器的业务。 二、Bond模式 1、mode0&#xff08;balanc…

华为机试(JAVA)真题Od【A卷+B卷】2023

目录 华为OD机试是什么&#xff1f;华为OD面试流程&#xff1f;华为OD机试通过率高吗&#xff1f;华为OD薪资待遇&#xff1f;华为OD晋升空间&#xff1f; 大家好&#xff0c;我是哪吒。 本专栏包含了最新最全的华为OD机试真题&#xff0c;有详细的分析和Java代码解答。已帮助…

Electron自定义窗口

Electron标题栏隐藏和自定义 Electron应用自定义标题栏样式 标题栏样式允许隐藏浏览器窗口的大部分色彩&#xff0c;同时保持系统原生窗口控件完整无损&#xff0c;并可以在 BrowserWindow 的构造器中使用 titleBarStyle 选项来配置。 应用 hidden 标题栏样式的结果是隐藏标…

msys2 pacman 安装 ncurses-devel 解决 make menuconfig 问题

问题描述 windows 下使用 msys2 环境&#xff0c;可以开发编译一些 Linux 下的软件包&#xff0c;一般Linux 下的软件包&#xff0c;需要安装 PC 平台的gcc、gcc交叉编译工具链&#xff0c;如 arm的&#xff0c;以及一些常用的 软件包&#xff0c;如 python 等 有一个软件包&a…

湖南棒球建设方案与意见·棒球1号位

湖南棒球建设可以从以下几个方面入手&#xff1a; 1. 加强基础设施建设&#xff1a;包括建设专业的棒球场馆、训练基地、设备仓库等&#xff0c;并配备合适的训练器材和辅助设施&#xff0c;提高训练和比赛的设施条件。 2. 推行普及计划&#xff1a;通过在学校、社会团体等场合…