首页 > 学院 > 开发设计 > 正文

公共字串计算——String.regionMatches方法 & Java标签

2019-11-15 00:00:19
字体:
来源:转载
供稿:网友
公共字串计算——String.regionMatches方法 & java标签

题目:输入两个字符串,计算两个字符串的最大公共字串的长度,并输出,字符不区分大小写

eg:输入abcde xxxBcyyy,输出 2。

完整Java代码:

import java.util.*;public class Main {    public  static void main(String arg[]){        Scanner s=new Scanner(System.in);        String str1=s.next();        String str2=s.next();        s.close();        String maxStr,minStr;        if(str1.length()>str2.length()){            maxStr=str1; minStr=str2;        }        else{            maxStr=str2; minStr=str1;        }        int max=maxStr.length();        int min=minStr.length();//System.out.PRintln(maxStr+" "+minStr+" "+max+" "+min);        int result=0;        OK:        for(int l=min;l>0;l--){            for(int i=0;i<=max-l;i++){                for(int j=0;j<=min-l;j++){                    if(maxStr.regionMatches(true, i, minStr, j, l)){                        result=l;//System.out.println(l+" "+i+" "+j);                        break OK;                    }                }                }        }        System.out.println(result);    }        }

学习点一:利用Java标签跳出多重循环;

学习点二:灵活使用String.regionMatches方法,来判断两个字符串的子串区域是否相等,具体可参考Java API文档如下。

regionMatches
public boolean regionMatches(booleanignoreCase,                             inttoffset,                             Stringother,                             intooffset,                             intlen)
测试两个字符串区域是否相等。

将此String对象的子字符串与参数other的子字符串进行比较。如果这两个子字符串表示相同的字符序列,则结果为true,当且仅当ignoreCase为 true 时忽略大小写。要比较的此String对象的子字符串从索引toffset处开始,长度为len。要比较的other的子字符串从索引ooffset处开始,长度为len。当且仅当下列至少一项为 true 时,结果才为false

  • toffset为负。
  • ooffset为负。
  • toffset+len大于此String对象的长度。
  • ooffset+len大于另一个参数的长度。
  • ignoreCasefalse,且存在某个小于len的非负整数k,即:
     this.charAt(toffset+k) != other.charAt(ooffset+k) 
  • ignoreCasetrue,且存在某个小于len的非负整数k,即:
     Character.toLowerCase(this.charAt(toffset+k)) !=               Character.toLowerCase(other.charAt(ooffset+k)) 
    以及:
     Character.toUpperCase(this.charAt(toffset+k)) !=         Character.toUpperCase(other.charAt(ooffset+k)) 
参数:
ignoreCase- 如果为true,则比较字符时忽略大小写。
toffset- 此字符串中子区域的起始偏移量。
other- 字符串参数。
toffset- 字符串参数中子区域的起始偏移量。
len- 要比较的字符数。
返回:
如果此字符串的指定子区域匹配字符串参数的指定子区域,则返回true;否则返回false。是否完全匹配或考虑大小写取决于ignoreCase参数。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表