자바 문자열 에서 해당 하 는 문 자 를 빠르게 찾 습 니 다.
1621 단어 자바 면접
String input = "allaaaa";
String query = "ll";
기 존의 방법:
1、indexof
return input.indexOf(query);
2、split
String[] s = input.split(query);
if (s.length > 1) {// 1
return s[0].length();
}
3. 정규 일치
Matcher matcher = Pattern.compile(query).matcher(input);
if (matcher.find()) {
return matcher.start();
}
이상 의 방법 은 모두 사용 할 수 없다
생각해 보 니 이 면접 문 제 는 indexof 의 내부 실현 을 빙빙 돌려 묻 지 않 았 습 니까?
정말...
아 이 디 어 는 두 개의 String 을 char [] 로 바 꾸 고 한 개의 대 비 를 하 며 일치 하 는 횟수 를 기록 하 는 것 입 니 다. 일치 하 는 횟수 가 문자열 을 찾 는 길이 와 같 으 면 검색 을 중단 하고 같 지 않 으 면 일치 하 는 테스트 를 비 우 는 것 입 니 다.
char[] inputArray = input.toCharArray();
char[] queryArray = query.toCharArray();
int inputLength = input.length();
int queryLength = query.length();
int inputIndex = 0;
int queryIndex = 0;
if (queryLength > inputLength) {
return -1;
}
while (inputIndex < (inputLength - queryLength)) {
if (inputArray[inputIndex] == queryArray[queryIndex]) {
inputIndex ++;
queryIndex ++;
} else {
inputIndex ++;
queryIndex = 0;
}
if (queryIndex == queryLength) { //
break;
}
}
return queryIndex == queryLength ? (inputIndex - queryLength) : -1;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 면접 문제 총화 (3) 의 Array List 에서 modCount 역할AbstractList 의 iterator () 방법 (ArrayList 가 이 방법 을 직접 계승 하 였 습 니 다) 은 개인 내부 구성원 클래스 Itr 를 사용 하여 Itr 대상 (Iterator 인터페이스) 을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.