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

1967作为子字符串出现在单词中的字符串数目

java解法,程度:简单

说明

给你一个字符串数组 patterns 和一个字符串 word ,统计 patterns 中有多少个字符串是 word 的子字符串。返回字符串数目。

子字符串 是字符串中的一个连续字符序列。

示例 1:

输入:patterns = ["a","abc","bc","d"], word = "abc"
输出:3
解释:
- "a" 是 "abc" 的子字符串。
- "abc" 是 "abc" 的子字符串。
- "bc" 是 "abc" 的子字符串。
- "d" 不是 "abc" 的子字符串。
patterns 中有 3 个字符串作为子字符串出现在 word 中。

示例 2:

输入:patterns = ["a","b","c"], word = "aaaaabbbbb"
输出:2
解释:
- "a" 是 "aaaaabbbbb" 的子字符串。
- "b" 是 "aaaaabbbbb" 的子字符串。
- "c" 不是 "aaaaabbbbb" 的字符串。
patterns 中有 2 个字符串作为子字符串出现在 word 中。

示例 3:

输入:patterns = ["a","a","a"], word = "ab"
输出:3
解释:patterns 中的每个字符串都作为子字符串出现在 word "ab" 中。

提示:

  • 1 <= patterns.length <= 100
  • 1 <= patterns[i].length <= 100
  • 1 <= word.length <= 100
  • patterns[i]word 由小写英文字母组成

解题

java中,String 类中有个contains方法

public boolean contains(CharSequence s) {return indexOf(s.toString()) > -1;
}

根据其中的源码可以作为解题的方法

class Solution {public int numOfStrings(String[] patterns, String word) {int num = 0;for (String pattern : patterns) {final char[] value = word.toCharArray();final char[] str = pattern.toCharArray();final int index = indexOf(value, 0, value.length,str, 0, str.length, 0);if (index > -1) {num++;}}return num;}/*** String和StringBuffer共享的用于进行搜索的代码。源是要搜索的字符数组,目标是要搜索到的字符串。** 参数:* source–正在搜索的字符。* sourceOffset–源字符串的偏移量。* sourceCount–源字符串的计数。* target–要搜索的字符。* targetOffset–目标字符串的偏移量。* targetCount–目标字符串的计数。* fromIndex–开始搜索的索引。*/
public int indexOf(char[] source, int sourceOffset, int sourceCount,char[] target, int targetOffset, int targetCount,int fromIndex) {if (fromIndex >= sourceCount) {return (targetCount == 0 ? sourceCount : -1);}if (fromIndex < 0) {fromIndex = 0;}if (targetCount == 0) {return fromIndex;}char first = target[targetOffset];int max = sourceOffset + (sourceCount - targetCount);for (int i = sourceOffset + fromIndex; i <= max; i++) {/* Look for first character. */if (source[i] != first) {while (++i <= max && source[i] != first) ;}/* Found first character, now look at the rest of v2 */if (i <= max) {int j = i + 1;int end = j + targetCount - 1;for (int k = targetOffset + 1; j < end && source[j]== target[k]; j++, k++);if (j == end) {/* Found whole string. */return i - sourceOffset;}}}return -1;}
}

String和StringBuffer共享的用于进行搜索的代码。源是要搜索的字符数组,目标是要搜索到的字符串。
参数:
source–正在搜索的字符。
sourceOffset–源字符串的偏移量。
sourceCount–源字符串的计数。
target–要搜索的字符。
targetOffset–目标字符串的偏移量。
targetCount–目标字符串的计数。
fromIndex–开始搜索的索引。

http://www.lryc.cn/news/192562.html

相关文章:

  • CocosCreator 面试题(二)JavaScript中的prototype的理解
  • python:从Excel或者CSV中读取因变量与多个自变量,用于训练机器学习回归模型,并输出预测结果
  • pycharm连接gitlab
  • 【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!
  • PCL点云处理之基于强度特征的SIFT关键点提取法 (二百一十五)
  • uniapp打包配置
  • 人大金仓分析型数据库最大量限制
  • centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口
  • 【算法|双指针系列No.7】leetcodeLCR 007. 三数之和
  • ubuntu修改IP地址
  • java springboot 通过ConfigurationProperties给第三方bean注入属性
  • windows系统安装openssl并且转换证书格式
  • 【GO】基础速成
  • 五子棋(C语言实现)
  • thymeleaf,bootstrap-fileinput 多文件上传
  • 爬虫 | 基础模块了解
  • CSS复习笔记
  • 编译linux的设备树
  • ⛳ MyBatis 中 Mapper 接口工作原理实例解析
  • Android 音频可视化
  • 刷机与救砖避坑指南
  • 软件建模知识点
  • WSL 配置 Linux
  • VS Code:CMake配置
  • Flex 词法分析实验实现(电子科技大学编译技术Icoding实验)
  • 设计模式——20. 解释器模式
  • 多输入多输出 | MATLAB实现CNN-BiLSTM-Attention卷积神经网络-双向长短期记忆网络结合SE注意力机制的多输入多输出预测
  • 一文让你玩转Linux多进程开发
  • Linux线程同步实例
  • LuatOS-SOC接口文档(air780E)-- iconv - iconv操作