java 自己实现字符串的匹配

package com.learn.algorithm.Str;

/**
 * 自己实现 字符串的匹配
 * @author Jiekun.Cui
 *
 */
public class SString {

    public static void main(String[] args) {
        System.out.println(indexOf("china","in",0));
    }

    /**
     * 字符串匹配算法  -- 查找s2 在s1 中的位置
     * @param s1
     * @param s2
     * @param pos 开始匹配的位置
     * @return
     */
    public static int indexOf(String s1,String s2,int pos){

        int l1 = s1.length();
        int l2 = s2.length();

        if (l2==0) {
            return -1;
        }

        int i1=pos,i2=0;

        while ( i1 < l1 && i2 < l2 ) {
            if (s1.charAt(i1) == s2.charAt(i2)) {
                i1 ++ ;
                i2 ++ ;
            } else {
                i1 = i1 - i2 + 1; //回到开始匹配且没有匹配成功的下一个位置,开始下一次匹配;
                i2 = 0;
            }
        }

        if( i2 <= l2 )  {
            return i1-i2;
        }

        return -1;
    }

}
时间: 2024-10-27 03:30:33

java 自己实现字符串的匹配的相关文章

java.sql.SQLException:ORA-01861:文字和格式字符串不匹配

1.错误描述 java.sql.SQLException:ORA-01861:文字和格式字符串不匹配 2.错误原因 字段名为statis_date在数据库中存储的数据类型是Date,而在Java中拼接SQL语句时传参数却是字符串类型,类型不匹配,导致出错 3.解决办法 (1)修改数据库中该字段的数据类型 这种方法不太建议 (2)修改拼接时传参数方式,将参数利用to_date转换

[转载]java字符串模糊匹配(

,需要在java中进行字符串的模糊匹配,由于要比较的对象长度不同,也没有固定的组成规则,收集到下列三个方法解决问题 方法一. public int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引.返回的整数是 this.startsWith(str, k)为 true 的最小 k 值. 参数:str - 任意字符串. 返回:如果字符串参数作为一个子字符串在此对象中出现,则返回第一个这种子字符串的第一个字符的索引:如果它不作为一个子字符串出现,则返回 -1.

Java编程基础-字符串

在Java语言中,字符串数据实际上由String类所实现的.Java字符串类分为两类:一类是在程序中不会被改变长度的不变字符串:另一类是在程序中会被改变长度的可变字符串.Java环境为了存储和维护这两类字符串提供了 String和StringBuffer两个类(在JDK1.5版本后出现了StringBuilder,该类被设计用作 StringBuffer 的一个简易替换). 一.字符串(String) 1.字符串概念了解 String 类代表字符串,Java 程序中的所有字符串字面值(如 "ab

Java正则表达式实现字符串的动态多替换

需求场景: 今天在处理SQL语句的时候,由于数据库中存的格式是VARCHAR2型的,这就需要对SQL语句中WHERE条件后边的带数字的字符串加上单引号,对于字符串的处理,首先想到的就是正则表达式,对正则表达式,虽然有一些了解,但是也谈上很熟练,百度了一番(正常网络也就那个几个无奈的搜索引擎使用啦),发现替换,基本上属于固定替换,就是把某一类符合正则标准的,全部替换为一个固定的字符串,比如说,错别字的处理啊,还是比较好用的,这个在程序中也有实现,很easy.但是,我需要的是多个,且是动态替换的,最

浅谈javascript和java中的字符串

javascript字符串操作 一.字符串的创建 创建一个字符串有几种方法. 1.最简单的是用引号将一组字符包含起来  var myStr = "Hello, String!";// 在js中单双引号没有区别 2.可使用如下语句:var myStr1 = new String("Hello, String!"); 1 2 console.log(typeof myStr);//"string" console.log(typeof myStr1)

java中判断字符串是否为数字的方法的几种方法

Java中判断字符串是否为数字的方法: 1.用JAVA自带的函数 public static boolean isNumeric(String str){ for (int i = 0; i < str.length(); i++){ System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))){ return false; } } return true; } 2.用正则表达式 首先要import java.

java正则表达式 match、find匹配位置

如题,对于java正则表达式这几个方法匹配一次后的,匹配位置搞不太清楚,就写了几个例子.如下: String ss="ooaaoo"; Pattern pt=Pattern.compile("(o+)"); Matcher mt=pt.matcher(ss); // mt.lookingAt(); // mt.matches(); while(mt.find()){ System.out.println(mt.group(1)+"|||"+mt.

黑马程序员----java基础--String字符串

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.String类概述 java中用String类进行描述对字符串进行了对象的封装.这样的好处是可以对字符串这种常见数据进行方便的操作.对象封装后,可以定义N多属性和行为. String类是final的,也就是说它没有子类. 二.String字符串的特点 1.字符串一旦被初始化就不可以被改变.并且存放在方法区中的常量池中. 1 class StringDemo{ 2 public static

Java正则表达式获得字符串中数字

下面通过一个小范例来学习如何获得一个字符串中的数字 import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { public static void main(String[] args) { String strInput = "[email protected];33"; String regEx = "[^0-9]";//匹配指定范围内的数字 //Pat