알고리즘 스마트 검색 (3)
2. 간단 한 알고리즘 단어 일치:
/**
* ,
* @param str:
* Red_Ant 20181124
*/
public static final String PUTUATION = "。,、':∶;?‘’“”〝〞ˆˇ﹕︰﹔﹖﹑·¨….¸;!´?!~—ˉ|‖"〃`@﹫¡¿﹏﹋﹌︴ ﹟#﹩$﹠&﹪%*﹡﹢﹦﹤‐ ̄¯―﹨ˆ˜﹍﹎+= dealInputStr(String str) {
/* , ( )
* , String
*/
//1、
List resultLst = new ArrayList();
//2、 ,
List strLst = selectStrFromDataBase(str);// , 。 , !
if(strLst.size() > 0) {
resultLst.addAll(strLst);
}
//3、 , , str【 】
// , , 。 , 。
String[] strs = str.split("");
int strsLength = strs.length;
List num = new ArrayList();
for (int i = 0; i < strsLength; i++) {
if(PUTUATION.contains(strs[i])) {
num.add(i);
}
}
// ,
int j = 0;//
/* ,
*
*/
String ss;
List pttstrLst = new ArrayList();
for (int i = 0; i < num.size(); i++) {
if(i == num.size()-1) {
ss = str.substring(j);
}else {
ss = str.substring(j, num.get(i));
}
pttstrLst.add(ss);
strLst = selectStrFromDataBase(ss);
if(strLst.size() > 0) {
resultLst.addAll(strLst);
}
j = num.get(i) + 1;
}
/*4、
* -1, , ,
* n , n+1 , 。
*/
String ss1;
for (int i = 0; i < pttstrLst.size(); i++) {
//jugeWord(String str), !
ss = pttstrLst.get(i);
int len = ss.length() - 2;
int s = 0;
int strlen = ss.length();
while (len > 1) {
int len1 = strlen - 2;
while (len1 < strlen-1) {
ss1 = ss.substring(s, len1);
if(!jugeWord(ss1)) {
strLst = selectStrFromDataBase(ss1);
if(strLst.size() > 0) {
resultLst.addAll(strLst);
}
}
s++;
len1++;
}
len--;
}
}
return resultLst;
}
[주의] 상기 방법 은 실제 장면 에서 의 응용 이 아니 라 고려 하지 않 은 요소 도 많다. 필 자 는 이 방법 이 통 하면 고려 하고 최적화 할 만 한 부분 이 많다 고 생각한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C++LeetCode 구현(79.단어 검색)이 문 제 는 전형 적 인 깊이 가 DFS 를 우선 적 으로 옮 겨 다 니 는 응용 프로그램 입 니 다.원래 2 차원 배열 은 하나의 미로 와 같 습 니 다.상하 좌우 네 방향 으로 걸 을 수 있 습 니 다.우 리 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.