2017-04-14 1 views
-2

문자열 길이 3에 "tip"과 "top"같은 패턴을 찾고 있는데, 't'로 시작하여 'p'로 끝납니다. 목표는 문자열을 반환하는 것입니다.이 경우 모든 중간 단어는 사라집니다. 예를 들어, "tipXtap"은 "tpXtp"를 산출합니다.하위 문자열을 검색하는 방법

지금까지 재귀 사용 및 replace() 메서드에 대해 생각해 보았지만 이것이이 문제에 접근하는 가장 좋은 방법인지 확신 할 수 없습니다.

String result = ""; 
if(str.length() < 3) 
    return str; 

for(int i = 0; i <= str.length() - 2; i++){ 
    if(str.charAt(i) == 't' && str.charAt(i + 2) == 'p'){ 
     str.replaceAll(str.substring(i + 1, i + 2), ""); 
    } 
    return str; 
} 

return str; 
+2

Regex가 도움이 될 것입니다.) – Tushar

+0

예, replace() 또는 replaceAll() 메소드와 함께 Regex를 사용하려고했습니다. 그것을 알아낼 수 없었다. – allmvp96

+0

어떤 프로그래밍 언어로 솔루션을 원하십니까? –

답변

2

사용이 자바 코드 :

String str = "tipXtap"; 
str = str.replaceAll("t.p", "tp"); 

regular expressions를 사용하고 String.replaceAll 기능

다음은 내 지금까지 코드입니다. . (도트) 문자는 regex metacharacter that matches any single character입니다.

+0

아, 그 작은 사실을 알지 못했습니다. 나는 그것을 지금 시도 할 것이다. – allmvp96

+1

'replaceAll'의 리턴 값을 포착해야한다는 점에 유의하십시오. – Andreas

+0

@Andreas 고마워, 고정 – MultiplyByZer0

1

이렇게하는 한 가지 방법.

  1. String을 char 배열로 변환하십시오.

  2. 첫 번째 문자의 첫 번째와 세 번째 문자의 유효성을 검사하는 조건을 사용하십시오. 먼저 문자열의 문자가 T인지 확인한 다음 두 문자가 떨어져있는 문자를 'p'로 확인하십시오. char 배열을 순회하는 루프 안에서이 작업을 수행해야합니다.

  3. 유효성 검사 조건이 참이면 중간 요소를 제거하십시오. char 배열에서 요소를 이동해야합니다.

  4. char 배열을 String으로 변환하여 리턴하십시오.

희망이 있습니다.

+0

그래, 그 def가 작동 할 수 있습니다. 그러나 저는 이것에 대해 간단하게 생각하는 방법이 있다고 생각합니다. – allmvp96

+0

도움을 주셔서 감사합니다 – allmvp96

+0

예, 나도 그렇게 생각합니다. 방금 아이디어를주었습니다 :) –

-1

여기 정규식을 사용하여이 문제에 대한 자바 스크립트 해결책 :

foo = 'tipXtop' 
foo.replace(/t\wp/g, 'tp') 

\w 정규식 연산자 (A-Z), A-Z, 0-9 또는 _ 같은 단어 문자 일치한다.

g 정규식 플래그는 문자열에서 정규식의 모든 인스턴스와 일치합니다.

+1

Java 용 질문입니다 (태그 참조). – Andreas

+0

알아,하지만 이것은 올바른 JavaScript 솔루션입니다. 당신이 downvote에 대한 이유가 없습니다. –

관련 문제