zoukankan      html  css  js  c++  java
  • Leetcode : eImplement strStr

    Leetcode : eImplement strStr

    描述

    对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。

    如果不让你采用正则表达式,你会怎么做呢?

    思路:
    1、 先排除source为null、target为null的情况
    2、 如果target的length为0,则返回0
    3、 如果target的length>source的length,则返回-1
    4、 定义一个for循环遍历source字符串,循环比对target字符串
    4.1、在for循环外部定义一个索引index,用来索引target,每一次循环,只有比对成功,index++;然后比对index和target的length长度,如果相同,则返回下标
    4.2、当比对不成功时,index重新赋值为0;需要重新比对一下,source[i]和target[0]

    好了,我们跟着思路来实现一下代码

    public static int strstr(String source , String target ) {
    	if(source == null || target == null ) {
    		return -1;
    	}
    		
    	int m = source.length();
    	int n = target.length();
    		
    	if(n == 0) {
    		return 0;
    	}
    		
    	if(n > m ) {
    		return -1;
    	}
    	int index = 0;
    	for(int i = 0 ; i < m ; i++ ) {
    		if( source.charAt(i) == target.charAt(index) ) {
    			index++;
    			if(index == n) {
    				//index多加了一次
    				return i - index + 1 ;
    			}
    		}else {
    			index = 0;
    			//source[i]需要和target[0]重新比对一下
    			if( source.charAt(i) == target.charAt(index) ) {
    				index++;
    			}
    		}
    	}
    	return -1;
    }
    
    

    补充:

    所需知识:

    List是有序(有序是指放入地顺序)的collection。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素地整数索引访问元素。

    List通常允许有重复的元素;更确切地讲,List通常允许满足e1.equals(e2)的元素对,并且如果List本身允许null元素的话,通常它们允许多个null元素;List只是一个接口

    Set是一个不包含重复元素的collection。更确切地讲,set不包含满足e1.equals(e2)的元素对,并且最多包含一个null元素

    Set: HashSet(无序的),LinkedHashSet,TreeSet,EnumSet(后三个有序)

    知道了这些,这题的答案明显就是A了

    以后Leetcode系列的文章都是这种风格了,题+题;对java面试还是比较有用的......

  • 相关阅读:
    洛谷 P1074 靶形数独 Label:search 不会
    TYVJ P3522 &&洛谷 P1135 奇怪的电梯 Label:bfs
    洛谷 P1160 队列安排 Label:链表 数据结构
    uestc 1073 秋实大哥与线段树 Label:线段树
    TYVJ P3407 佳佳的魔法照片 Label:语文很重要 语文很重要 语文很重要
    TYVJ P1103 多项式输出 Label:模拟 有点儿坑
    A+B Problem 详细解答 (转载)
    如何批量修改文件名
    c++ 在windows下获取时间和计算时间差的几种方法总结
    SQL Server 2008在Windows 10上不支持
  • 原文地址:https://www.cnblogs.com/qjmnong/p/9142566.html
Copyright © 2011-2022 走看看