LeetCode——Interleaving String

2023-12-11 17:18

本文主要是介绍LeetCode——Interleaving String,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Interleaving String


For example,
Given:
s1 = "aabcc",
s2 = "dbbca",

When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.

 

Java代码:

public class Solution {public boolean isInterleave(String s1, String s2, String s3) {int s1_len = s1.length();int s2_len = s2.length();int s3_len = s3.length();if((s1_len+s2_len)!= s3_len) return false;if(s1 == null || s2 == null || s3==null)return false;if(s3.equals("")) return true;if(s1.equals("") && s2.equals(""))return false;if(!(s1.equals("")) && !(s2.equals(""))){if(s3.charAt(0) == s1.charAt(0) || s3.charAt(0)==s2.charAt(0)){if(s3.charAt(0) == s1.charAt(0) && s3.charAt(0)==s2.charAt(0)){if(!isInterleave(s1.substring(1), s2, s3.substring(1)))if(!isInterleave(s1, s2.substring(1), s3.substring(1)))return false;}else if(s3.charAt(0) == s1.charAt(0)){if(!isInterleave(s1.substring(1), s2, s3.substring(1)))return false;}else{if(!isInterleave(s1, s2.substring(1), s3.substring(1)))return false;}}else{return false;}}else if(!s1.equals("")){if(s3.charAt(0) == s1.charAt(0)){if(!isInterleave(s1.substring(1), s2, s3.substring(1)))return false;}else{return false;}}else{if(s3.charAt(0) == s2.charAt(0)){if(!isInterleave(s1, s2.substring(1), s3.substring(1)))return false;}else{return false;}}return true;}
}


代码提交之后,测试库里面有一组很长的字符串数组,结果“Time Limit Exceeded

原题的要求应该是使用时间复杂度更低的算法实现。

用动态规划的java实现:
public class Solution {public boolean isInterleave(String s1, String s2, String s3) {String min_string = s1.length()>s2.length()?s2:s1;String max_string = s1.length()>s2.length()?s1:s2;boolean [][] val = new boolean [min_string.length()+1][max_string.length()+1];if((s1.length()+s2.length())!=s3.length())return false;for(int i=0;i<=min_string.length();i++)for(int j=0;j<=max_string.length();j++)val[i][j] =false;val[0][0] = true;for(int i =1;i<=min_string.length();i++)if(s3.charAt(i-1) == min_string.charAt(i-1))val[i][0] =true;elsebreak;for(int j=1;j<=max_string.length();j++)for(int i=0;i<=min_string.length();i++)if(i ==0){if(val[i][j-1]==true && s3.charAt(i+j-1)==max_string.charAt(j-1))val[i][j] =true;}else{if((val[i-1][j]==true && s3.charAt(j+i-1)==min_string.charAt(i-1)) ||(val[i][j-1]==true && s3.charAt(i+j-1)==max_string.charAt(j-1)))val[i][j] =true;}if(val[min_string.length()][max_string.length()]==true)return true;else return false;}
}

做了一下运行时间的对比
代码一:13261ms 代码二:2ms



这篇关于LeetCode——Interleaving String的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/481461

相关文章

C++中处理文本数据char与string的终极对比指南

《C++中处理文本数据char与string的终极对比指南》在C++编程中char和string是两种用于处理字符数据的类型,但它们在使用方式和功能上有显著的不同,:本文主要介绍C++中处理文本数... 目录1. 基本定义与本质2. 内存管理3. 操作与功能4. 性能特点5. 使用场景6. 相互转换核心区别

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

redis数据结构之String详解

《redis数据结构之String详解》Redis以String为基础类型,因C字符串效率低、非二进制安全等问题,采用SDS动态字符串实现高效存储,通过RedisObject封装,支持多种编码方式(如... 目录一、为什么Redis选String作为基础类型?二、SDS底层数据结构三、RedisObject

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

java String.join()方法实例详解

《javaString.join()方法实例详解》String.join()是Java提供的一个实用方法,用于将多个字符串按照指定的分隔符连接成一个字符串,这一方法是Java8中引入的,极大地简化了... 目录bVARxMJava String.join() 方法详解1. 方法定义2. 基本用法2.1 拼接

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

Java String字符串的常用使用方法

《JavaString字符串的常用使用方法》String是JDK提供的一个类,是引用类型,并不是基本的数据类型,String用于字符串操作,在之前学习c语言的时候,对于一些字符串,会初始化字符数组表... 目录一、什么是String二、如何定义一个String1. 用双引号定义2. 通过构造函数定义三、St

Java中的String.valueOf()和toString()方法区别小结

《Java中的String.valueOf()和toString()方法区别小结》字符串操作是开发者日常编程任务中不可或缺的一部分,转换为字符串是一种常见需求,其中最常见的就是String.value... 目录String.valueOf()方法方法定义方法实现使用示例使用场景toString()方法方法

C#数据结构之字符串(string)详解

《C#数据结构之字符串(string)详解》:本文主要介绍C#数据结构之字符串(string),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录转义字符序列字符串的创建字符串的声明null字符串与空字符串重复单字符字符串的构造字符串的属性和常用方法属性常用方法总结摘

如何解决mysql出现Incorrect string value for column ‘表项‘ at row 1错误问题

《如何解决mysql出现Incorrectstringvalueforcolumn‘表项‘atrow1错误问题》:本文主要介绍如何解决mysql出现Incorrectstringv... 目录mysql出现Incorrect string value for column ‘表项‘ at row 1错误报错