c语言如何判断是否是子序列,leetcode392(判断子序列)--C语言实现

求:

给定字符串 s 和 t ,判断 s 是否为 t 的子序列。

你可以认为 s 和 t 中仅包含英文小写字母。字符串 t 可能会很长(长度 ~= 500,000),而 s 是个短字符串(长度 <=100)。

字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不是)。

示例 1:

s = "abc", t = "ahbgdc"

返回 true.

示例 2:

s = "axc", t = "ahbgdc"

返回 false.

解:

1、双指针

利用2个指针分别遍历字符串s和字符串t,直到某个字符串遍历完成。使用一个遍历findCount来记录匹配字符数,findCount初始化为0,遍历过程中如果发现字符匹配,findCount加1。退出时判断findCount是否与字符串s的长度相等,相等说明是子串,否则不是子串。

时间复杂度:O(M+N),M为字符串s长度,N为字符串t长度,因为N远大于M,可以近似为O(N)

空间复杂度:O(1)

bool isSubsequence(char* s, char* t){

inti,j;intfindCount = 0;for(i=0,j=0;i

if(s[i]==t[j]){

++i;++findCount;}

}

returnfindCount == strlen(s);}

2、双指针优化

不计算字符串s和字符串t的长度,直接比。退出的条件是字符串s或字符串t遍历完成。

时间复杂度:O(M+N),M为字符串s长度,N为字符串t长度,因为N远大于M,可以近似为O(N)

空间复杂度:O(1)

bool isSubsequence(char* s, char* t){

while(1){

if(!*s) return true;if(!*t) return false;if(*t++ == *s) s++;}

}

3、动态规划

参考官方题解。

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

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

相关文章

leetcode数组汇总_LeetCode刷题:前言

LeetCode刷题&#xff1a;前言前言作为一个对编程超级不通的小白&#xff0c;在2020年11月开始打算正式的刷LeetCode。&#xff08;PS&#xff1a;前面有刷过&#xff0c;但是都是随机&#xff0c;看心情乱刷的&#xff0c;刷完后也没有什么感觉&#xff0c;该不会的还是不会&a…

淮海工学院大一c语言期中试题,《C语言程序设计》期中考试试卷

《《C语言程序设计》期中考试试卷》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《《C语言程序设计》期中考试试卷(5页珍藏版)》请在人人文库网上搜索。1、淮 海 工 学 院10 11 学年 第 2 学期 C语言程序设计 期中考试试卷题号一二三四五总分得分单项选择题答题表123…

通信基站c语言,[转]2015年数学建模C题–基于无线通信基站的室内三维定位问题...

之前做的一题跟大家分享一下&#xff0c;实际该题数据出的有点问题(个人看法不喜勿喷)。这题主要是做基站定位的&#xff0c;方法主要是用的基于几何的方法。该题总共四题&#xff0c;由于只有测试case可以验证性能&#xff0c;非测试case的结果我就不放了在本题中&#xff0c;…

c语言fopen_s的用法,fopen和fopen_s用法的比较

参考&#xff1a;在定义FILE * fp 之后&#xff0c;fopen的用法是: fp fopen(filename,"w")。而对于fopen_s来说&#xff0c;还得定义另外一个变量errno_t err&#xff0c;然后err fopen_s(&fp,filename,"w")。返回值的话&#xff0c;对于fopen来说&…

php redis 投票_高可用Redis服务架构分析与搭建

HorstXuhttps://www.cnblogs.com/xuning/p/8464625.html基于内存的Redis应该是目前各种web开发业务中最为常用的key-value数据库了&#xff0c;我们经常在业务中用其存储用户登陆态&#xff08;Session存储&#xff09;&#xff0c;加速一些热数据的查询&#xff08;相比较mysq…

android studio 启动画面,Android Studio 利用Splash制作APP启动界面的方法

public class SplashActivity extends Activity {// private final int SPLASH_DISPLAY_LENGHT 2000; // 两秒后进入系统Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getWindow().addFlags(WindowManager.LayoutParams.…

android驱动测试,Android: 通过 cucumber 驱动 monkey 做稳定性测试

主要内容稳定性测试是什么Monkey 介绍自动化 Monkey稳定性测试是什么通过随机点击屏幕一段时间&#xff0c;看看 app 会不会奔溃&#xff0c;能不能维持正常运行。Monkey 介绍Monkey 是一个命令行工具&#xff0c;它可以运行在我们的模拟器或者设备当中。它可以发送一些伪随机(…

gradle 查看依赖类库版本_Android studio中查看依赖的第三方库的历史版本和最新版本...

在日常开发过程中&#xff0c;我们通过会依赖很多的第三方库项目。类似这样&#xff1a;dependencies {compile com.android.support:support-v4:24.2.1compile com.google.code.gson:gson:2.4compile com.lzy.net:okhttputils:1.7.0compile com.github.ybq:Android-SpinKit:1.…

set和map去重调用什么方法_【ES6】Set、Map

SetSet 是 ES6 提供给我们的构造函数&#xff0c;能够造出一种新的存储数据的结构特点&#xff1a;只有属性值没有属性名&#xff0c;成员值唯一用途&#xff1a;可以转成数组&#xff0c;其本身具备去重(自动去重)&#xff0c;交集&#xff0c;并集&#xff0c;差集的作用等参…

cygwin 编译 android vlc,Cygwin 编译 VLC 问题

Cygwin 编译 VLC遇到了这么多问题&#xff0c;不过还好最后编译过去了。问题1&#xff1a;gcc -mno-cygwin -Wsign-compare-Wall -mms-bitfields -pipe -o libaccess_output_dummy_plugin.dll-g-shared -u _vlc_entry__0_8_6 -L/usr/win32/liblibaccess_output_dummy_plugin.a …

kvm上添加万兆网卡_烂泥:为KVM虚拟机添加网卡

本文首发于烂泥行天下。前几篇文章介绍了有关KVM安装虚拟机以及如何给虚拟机添加硬盘&#xff0c;今天我们再来介绍下有关如何给KVM虚拟机添加网卡。给KVM虚拟机添加网卡&#xff0c;可以分为两种形式&#xff1a;图形界面的和virsh attach-interface命令的。图形界面的很简单&…

android studio日历小程序,android studio无法加载日历界面

LayoutInflater inflater (LayoutInflater) getApplicationContext().getSystemService(LAYOUT_INFLATER_SERVICE); //载入界面view inflater.inflate(R.layout.pumkin_calendar,null);AlertDialog.Builder ad;ad new AlertDialog.Builder(pumkinLand.this);ad.setView(view);…

gazebo 直接获取传感器数据_5个使传感器更简单的技巧

传感器遍布地球表面和周围空间&#xff0c;为世界提供数据。这些廉价的传感器是物联网背后的驱动力之一&#xff0c;也是我们社会现在面临的数字革命。然而&#xff0c;连接到传感器并从传感器获取数据并不总是直截了当或容易的。这里有五个提示&#xff0c;可以帮助工程师第一…

paylinks.php_毕业设计-基于PHP的网上购物网站系统设计

毕业设计-基于PHP的网上购物网站系统设计&#xff0c;共45页&#xff0c;14912字&#xff0c;附完整的程序源代码。包括前台&#xff0c;后台的实现&#xff0c;先运行phpStudyAdmin后打开dzsw/install.php摘要随着Internet技术的发展&#xff0c;人们的日常生活已经离不开网络…

com/android/dx/command/main,com/android/dx/command/dexer/Main : Unsupported major.minor version 52.0

如果你在开发过程中遇到了上述的Bug&#xff0c;基本上是JDK版本不一致造成的&#xff0c;指的是高版本的JDK编译的class不能放在低版本的JDK上运行。如果是Version 52&#xff0c;就表示JDK8编译的class不能运行在JDK7上&#xff0c;所以需要在本地安装JDK8. 如果是Version 51…

谷歌浏览器怎么重发请求_Googel 浏览器 模拟发送请求工具--Advanced REST Client

Advanced REST Client是 Chrome 浏览器下的一个插件&#xff0c;通过它可以发送 http、https、WebSocket 请求。在 Chrome 商店下搜索 Advanced REST Client&#xff0c;即可找到如果搜索不到的可到CSDN 下载&#xff1a;1.下载插件&#xff1a;Advanced Rest Client2.因为最新…

鸿蒙os吃内存吗,终于上手机!华为鸿蒙 OS 2.0 系统:128KB 内存就能跑

终于上手机&#xff01;华为鸿蒙 OS 2.0 系统&#xff1a;128KB 内存就能跑2020-09-11 10:51:480点赞0收藏0评论9月11日消息&#xff0c;华为昨天下午在东莞松山湖举办了全球开发者大会&#xff0c;本次大会带来了全新的 EMUI 11 系统和备受期待的鸿蒙 OS 2.0 操作系统&#xf…

flink 不设置水印_区分理解Flink水印延迟与窗口允许延迟的概念

link 在开窗处理事件时间(Event Time) 数据时&#xff0c;可设置水印延迟以及设置窗口允许延迟(allowedLateness)以保证数据的完整性。这两者因都是设置延迟时间所以刚接触时容易混淆。本文接下将展开讨论分析“水印延迟”与“窗口允许延迟”概念及区别。水印延迟(WaterMark)(1…

爱特php文件管理器2.8_查找「超级蜘蛛池开发者中心 抠:44564876易」安卓应用 - 豌豆荚...

8.6万人安装开发者头条 - 程序员分享平台 2015 年获「最美应用」官方推荐&#xff0c;程序员必装的应用。 开发者头条是由一群程序员创建的&#xff0c;我们运营了 developerWorks 的微博、微信&#xff0c;创建了码农周刊&#xff0c;已覆盖百万程序员&#xff1b; 我们更懂程…

谈华为鸿蒙内核和操作系统,谈华为鸿蒙内核和操作系统

作者 | 陆首群谈到华为自研鸿蒙内核和操作系统&#xff0c;从华为透漏出来的信息来看&#xff0c;有点自相矛盾、扑朔迷离&#xff01;我曾说过&#xff1a;真真假假&#xff0c;虚虚实实&#xff01;这里有技术原因&#xff0c;也有外部原因。一开始(大概是 2016 年左右)&…