JAVA 두 문자열 이 일치 하 는 글자 수 입 니 다.
//세 가지 일치 방법 비교 사용
public class RangeDifferencerOK {
/**
*
* 〈 〉 〈 , , .〉
*
* @param model
* @param input
* @return int , @exception/throws [ ]
* [ :
* @see [ 、 # 、 # ]
*/
public int Comparator(String model, String input) {
char[] modelByte = model.toCharArray();
char[] inputByte = input.toCharArray();
//
int j = 0;
int right = 0;
// StringBuffer sb = new StringBuffer();
// StringBuffer sb2 = new StringBuffer();
// StringBuffer sb3 = new StringBuffer();
for (int i = 0; i < modelByte.length; i++) {
int indexNum = ComparatorStr(modelByte[i], inputByte, j);
// System.out.println(" :"+(char)modelByte[i]+" :"+indexNum);
//
if (indexNum >= 0) {
//
j = indexNum + 1;
// +1
right++;
// sb.append((char) modelByte[i]);
// sb2.append(indexNum + ",");
// sb3.append(j + ",");
//
}
}
//
// System.out.println(" :" + right);
// System.out.println(" :" + sb);
// System.out.println(" :" + model);
// System.out.println(" :" + input);
// System.out.println(" :" + sb2);
// System.out.println(" :" + sb3);
return right;
}
/**
*
* 〈 〉 〈 , , .〉
*
* @param model
* @param input
* @return int , @exception/throws [ ]
* [ :
* @see [ 、 # 、 # ]
*/
public int Comparator2(String model, String input) {
char[] modelByte = model.toCharArray();
char[] inputByte = input.toCharArray();
int right = 0;
int modelIi = 0;
int inputJj = 0;
for (int i = 0,j=0; i < modelByte.length && j < inputByte.length; i++,j++) {
if (modelByte[i] == inputByte[j]) {
right++;
}else{
for(int ti =i; ti<modelByte.length; ti++){
if(modelByte[ti] == inputByte[j]){
modelIi = ti;
break;
}else if(modelByte.length == ti+1){
i--;
}
}
for(int tj =j; tj<inputByte.length; tj++){
if(inputByte[tj] == modelByte[i]){
inputJj = tj;
break;
}else if(inputByte.length == tj+1){
inputJj = inputByte.length;
}
}
if(modelIi >= inputJj){
right++;
j = inputJj;
}else if((modelIi-i) >= (inputJj-j)) {
right++;
j = inputJj;
}
}
}
return right;
}
/**
*
* 〈 〉 〈 , , .〉
*
* @param model
* @param input
* @return int , @exception/throws [ ]
* [ :
* @see [ 、 # 、 # ]
*/
public int Comparator3(String model, String input) {
char[] modelByte = model.toCharArray();
char[] inputByte = input.toCharArray();
int indexNumRe = 0;
//
int j = 0;
int right = 0;
// StringBuffer sb = new StringBuffer();
for (int i = 0; i < modelByte.length; i++) {
int indexNum = ComparatorStr(modelByte[i], inputByte, j);
//
if(i<modelByte.length-1 && indexNum < 0){
int indexNum2 = ComparatorStr(modelByte[i+1], inputByte, j);
if (indexNum < indexNum2) {
//
j = indexNum + 1;
indexNumRe = indexNum;
// +1
right++;
// sb.append((char) modelByte[i]);
}else if(indexNum == -1 && indexNum2 == -1){
indexNum = indexNumRe;
j = indexNum + 1;
}
}else{
if (indexNum >= 0) {
j = indexNum + 1;
indexNumRe = indexNum;
// +1
right++;
// sb.append((char) modelByte[i]);
}
}
}
return right;
}
// byte ,
public int ComparatorStr(char model, char[] input, int mindex) {
// String model="013356";
for (int i = mindex; i < input.length; i++) {
if (model == input[i]) {
return i;
}
}
return -1;
}
/**
*
* 〈 〉
* 〈 , , . 〉
* @param source
* @return String
* , @exception/throws [ ] [ :
* @see [ 、 # 、 # ]
*/
public int coutWord(String source){
//
String reg2="[\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\`\\-\\=\\~\\!\\@\\#\\$\\" +
"%\\^\\&\\*\\\\(\\)\\_\\+\\=\\-\\`\\[\\]\\\\'\\;\\/\\.\\,\\<\\>\\?\\:" +
"\"\\{\\}\\|\\,\\.\\/\\;\\'\\[\\]\\\\\<\\>\\?\\:\\"\\{\\}\\|\\“\\”\\" +
"‘\\’\\。\\r+\
+\\t+\\s\\]";
//
source = source.replaceAll(reg2, "");
return source.getBytes().length;
}
/**
*
* 〈 〉
* 〈 , , 〉
* @param source
* @return String
* , @exception/throws [ ] [ :
* @see [ 、 # 、 # ]
*/
public String RemovedSymbols(String source){
//
String reg2="[\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\`\\-\\=\\~\\!\\@\\#\\$\\" +
"%\\^\\&\\*\\\\(\\)\\_\\+\\=\\-\\`\\[\\]\\\\'\\;\\/\\.\\,\\<\\>\\?\\:" +
"\"\\{\\}\\|\\,\\.\\/\\;\\'\\[\\]\\\\\<\\>\\?\\:\\"\\{\\}\\|\\“\\”\\" +
"‘\\’\\。\\r+\
+\\t+\\s\\]";
//
source = source.replaceAll(reg2, "");
return source;
}
/**
*
* 〈 〉
* 〈 〉
* @param input
* @param model
* @return String
* , @exception/throws [ ] [ :
* @see [ 、 # 、 # ]
*/
public String getTempModel(String input,String model){
StringBuffer returnStr = new StringBuffer();
//
if(model!=null){
//
char[] modelChs = model.toCharArray();
String cm = null;
boolean sign = false;
for (int i = 1; i < modelChs.length; i++) {
//
cm = String.valueOf(modelChs[i-1])+String.valueOf(modelChs[i]);
// input
if(input.indexOf(cm)!=-1){
if(!sign){
returnStr.append(String.valueOf(modelChs[i-1]));
}
else{
returnStr.append(String.valueOf(modelChs[i-1]));
}
sign = true;
//
if(i==modelChs.length-1){
returnStr.append(String.valueOf(modelChs[i]));
}
}else{
if(sign){
returnStr.append(String.valueOf(modelChs[i-1]));
sign=false;
}
}
}
}
return returnStr.toString();
}
public static void main(String[] args) {
RangeDifferencerOK r = new RangeDifferencerOK();
String input= " ";
String model= " 、 2010 。 、 、 。 , , , “ 、 ” , , , 、 , 。 , , , “ ” , , 。";
input= " ";
model= " , 、 “ + ” , 。 E “ ” , , 、 , 。 E 2200 。 、 , , , 。 、 , 、 , , 。 、 , “ ” , 5 , 。 , 。";
// input= " ";
//
// model= " , 、 , , , 。 、 、 , , 。 、 , 1669 , 。 、 , , , 。 、 , , , 。 , 2000 , 。";
//
// input= " , vjishu ";
// model= " 2010 。 、 、 。 , , , “ 、 ” , , , 、 , 。 , , , “ ” , , 。";
// StringBuffer s1 = new StringBuffer();
// s1.append("EJP(Extensible Java Profiler ) Java , , . Java Java , .EJP JVMPI(Java Virtual Machine Profiler Interface ) Java .");
// StringBuffer s2 = new StringBuffer();
// s2.append("EJP(Extensible Java Profiler ) dgJava , , . Java Java , .EJP JVMPI(Java Virtual Machine Profiler Interface ) Java .");
input = r.RemovedSymbols(input);
model = r.RemovedSymbols(model);
//System.out.println(" :"+input.length());
//System.out.println(" :"+model.length());
String newModel = r.getTempModel(input, model);
String newInput = r.getTempModel(model, input);
// System.out.println(" :"+newModel);
// System.out.println(" :"+newInput);
//System.out.println(" :"+newInput.length());
//System.out.println(" :"+newModel.length());
//System.out.println(" :"+r.Comparator(newModel, newInput));
System.out.println(" :"+r.Comparator(newInput, newModel));
System.out.println(" :"+r.Comparator2(newInput, newModel));
System.out.println(" :"+r.Comparator3(newInput, newModel));
System.out.println(" :"+newModel);
System.out.println(" :"+newInput);
//System.out.println(" :"+model);
//System.out.println(" :"+model);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.