字符串包含问题的求解(最简单的方法——只有两行代码)
来源:互联网 发布:淘宝详情自动生成 编辑:程序博客网 时间:2024/05/21 09:44
我们在参加笔试或者写代码的时候总会与字符串打交道,今天主要想说的是如何解决字符串包含的问题。
问题是,给你一个字符串然后让你循环移位能否得到一个给定的字符串,比如给你ABCDE 能否将其进行移位得到CDEA,这样的问题。
遇到这样的 问题我们可能第一件事就是对其进行循环移位,这个方法是没有问题的,但是我们想想如果字符串很长很长,那么我们的效率是不是会很高呢?时间复杂度应该为字符串的长度。这样肯定效率不是很高的。下面我们来进行分析。
ABCDE进行移位得到的结果为:
ABCDE ->BCDEA -> CDEAB -> DEABC -> EABCD -> ABCDE
我们这样来看,
BCDEA = ABCDE ABCDE 去掉前面的A字母和后面的BCDE字母
CDEAB = ABCDE ABCDE 去掉前面的AB字母和后面的CDE字母
同理。。。。。。。。
我们发现不管怎么旋转ABCDE都是可以由ABCDEABCDE截取下来得到的。
所以我们的问题也就解决了,我们把原来的字符串进行相叠加,也就是将ABCDE叠加为ABCDEABCDE,这样我们在判断移位得到子串的时候就直接进行判断是否包含就可以知道能不能从原来的字符串移位得到了。
所以这样的一个方法就使我们的程序变得非常的简单了。
下面是一个简单的例子来说明下:
package testString;public class TestString {/** * @param args */public static boolean isContent(String str1,String str2){//str1为原来的字符串,str2为能否得到的字符串String tem = str1+ str1;boolean result = tem.contains(str2);return result;}public static void main(String[] args) {// TODO Auto-generated method stubString str1 = "ABCDE";String str2 = "CDEA";System.out.println(isContent(str1, str2));}}
得到的结果为:
true
所以我们这样就不需要循环就OK了。既简单有提高了效率。
- 字符串包含问题的求解(最简单的方法——只有两行代码)
- 字符串包含问题的求解
- Asp.Net判断一个字符串是否包含某个字符的最简单方法!(示例)
- 只有两层节点且每个父节点只有一个子节点的简单折叠方法
- 最简单的迷宫求解
- 最简单的迷宫求解
- 背包问题——“完全背包”详解及实现(包含背包具体物品的求解)
- 背包问题——“完全背包”详解及实现(包含背包具体物品的求解)
- 背包问题——“完全背包”详解及实现(包含背包具体物品的求解)
- 背包问题——“完全背包”详解及实现(包含背包具体物品的求解)
- 背包问题——“完全背包”详解及实现 (包含背包具体物品的求解)
- 用非递归方法实现 求解字符串组合的问题 JAVA代码
- 最短的包含字符串
- 字符串的包含问题
- 字符串的包含问题
- 字符串的包含问题
- 字符串-字符串的包含-两种基本思路
- 字符串比较——最简单的方法(有点水)
- 最近估计太多时间放在blog上了,功夫开始恢复锻炼,项目有点事做,还要准备面试。
- iTextSharp 對PDF簽名
- 20121017 ubuntu下,adb device: Permission denied解决方法
- 重温C语言----(一)储备性知识
- 关于android中使用很多大图片的一些做法(转)
- 字符串包含问题的求解(最简单的方法——只有两行代码)
- Git Windows客户端保存用户名和密码的问题
- 依赖倒置原则
- 重载、覆盖、多态与函数隐藏---2
- NDK环境搭建
- 第一个项目Struts2
- 学习在Weblogic服务器中配置消息服务器图解
- DOS
- 为一个固定地址赋值