碰到的一个简单的算法题,关于两个字符串word1和word2,判断word1能不能只通过删除字符就能够得到word1.

这是我写的一个解法,大概思路是说。首先判断如果word2的长度大于word1则直接返回false,负责继续执行。

我们判断在word2中的每一个字符在word1中出现的位置,如果刚好符合word1中的全部或者部分字符的组成顺序那么就符合返回true。

具体的代码实现如下:

static boolean isTrans(String word1,String word2){
        if(word2==null || word2.length()==0) return true;
        if(word1 == null || word1.equals("") || word2.length()>word1.length()) return false;
        char [] chars1 = word1.toCharArray();
        char [] chars2 = word2.toCharArray();
        int c2Index = 0;
        for(int i=0;i<chars1.length;i++){
            if(chars1[i]==chars2[c2Index]){
                c2Index++;
                if(c2Index>=word2.length()) break;  // 这里主要判断如果当这个c2Index已经大于word2.length()的时候就没有必要继续执行了
            }
        }
        return c2Index == word2.length();
    }

原文地址:https://www.cnblogs.com/leiroliu/p/11845435.html

时间: 2024-11-04 13:51:32

碰到的一个简单的算法题,关于两个字符串word1和word2,判断word1能不能只通过删除字符就能够得到word1.的相关文章

简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现。

简单的算法题, Find Minimum in Rotated Sorted Array 的Python实现. 题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2). Find the minimum element. You may assume no duplicate exists in t

一个简单的算法,定义一个长度为n的数组,随机顺序存储1至n的的全部正整数,不重复。

前些天看到.net笔试习题集上的一道小题,要求将1至100内的正整数随机填充到一个长度为100的数组,求一个简单的算法. 今天有空写了一下.代码如下,注释比较详细: 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Text.RegularExpressions; 6 7 namespace TestNumber 8 { 9 cl

算法题——合并两条有序的链表

题目:给定两个已排序的链表,返回合并后的链表. 思路:将链表L2的每个结点插入到链表L1中,时间复杂度为O(m+n),m.n分别为两条链表的长度. 代码: 1 struct ListNode 2 { 3 int value; 4 ListNode *next; 5 ListNode(int v): value(v), next(NULL) 6 { 7 } 8 }; 9 10 ListNode *mergeSortedList(ListNode *L1, ListNode *L2) 11 { 12

一道简单的算法题(三角形数阵)

今天同学给了几个算法题,看了一遍,觉得第一道题简单,试着写了一下,果然很简单. 题目是 核心代码只有 for(var i= 0; i< N; i++){ str += '<div class="item">'; for(var j= 0; j< N-i; j++){ str += '<div class="list">'+ start +'</div>'; start++; if(start > T){ star

Ant—使用Ant构建一个简单的Java工程(两)

博客<Ant-使用Ant构建一个简单的Java项目(一)>演示了使用Ant工具构建简单的Java项目,接着这个样例来进一步学习Ant: 上面样例须要运行多条ant命令才干运行Test类中的main函数,能不能简化须要运行命令呢?答案是肯定的,能够将build.xml文件里的脚本改成以下的脚本: <? xml version="1.0" encoding="UTF-8"?> <project name="test" d

leetcode算法题1: 两个二进制数有多少位不相同?异或、位移、与运算的主场

/*The Hamming distance between two integers is the number of positions at which the corresponding bits are different. Given two integers x and y, calculate the Hamming distance. Note:0 ≤ x, y < 231. Example: Input: x = 1, y = 4 Output: 2 Explanation:

算法题——确定两串乱序同构

欢迎转载,请附出处: http://blog.csdn.net/as02446418/article/details/47145467 给定两个字符串,请编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串.这里规定大小写为不同字符,且考虑字符串重点空格. 给定一个string stringA和一个string stringB,请返回一个bool,代表两串是否重新排列后可相同.保证两串的长度都小于等于5000. 测试样例: "This is nowcoder","

Java算法——求出两个字符串的最长公共字符串

问题:有两个字符串str1和str2,求出两个字符串中最长公共字符串. 例如:“acbbsdef”和"abbsced"的最长公共字符串是“bbs” 算法思路: 1.把两个字符串分别以行和列组成一个二维矩阵. 2.比较二维矩阵中行和列对应的每个点的字符是否相同,是设置这个点为1,否设置这个点为0. 3.通过查找值为1的最长对角线来找到最长公共字符串. 通过上面str1和str2两个字符串,分别得出以行和列组成的一个二维矩阵如下图: 从上图可以看到,str1和str2共有3个公共子串&qu

java研究一个简单的算法碰到这种输出,哎,以前还真没注意还能这样......

求大神指定这种运行原理叫什么????? package org.rui.util; import java.util.HashMap; import java.util.Map; public class A { public static void main(String[] args) { Map<String, String> m = new HashMap<String, String>(); Map m2 = m; m2.put("a", "