Lettocde_290_Word Pattern
Given a
pattern
and a string str
, find if str
follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in
pattern
and a non-empty word in str
. Examples:
"abba"
, str = "dog cat cat dog"
should return true. "abba"
, str = "dog cat cat fish"
should return false. "aaaa"
, str = "dog cat cat dog"
should return false. "abba"
, str = "dog dog dog dog"
should return false. 생각:
(1) 문 제 는 문자 스타일 과 문자열 을 지정 하 는 것 입 니 다. 이 문자열 이 주어진 스타일 인지 판단 해 야 합 니 다.
(2) 주어진 pattern 은 여러 문자 로 구성 되 어 있 기 때문에 서로 다른 문 자 는 서로 다른 문자열 에 대응 해 야 하고 같은 문 자 는 같은 문자열 에 대응 해 야 합 니 다.이렇게 하면 맵 을 통 해 이 를 실현 할 수 있다.우선, pattern 을 문자 배열 pt 로 바 꾸 고 판단 할 문자열 을 문자열 배열 split 로 바 꿉 니 다.그 다음 에 두 배열 의 길이 가 다 르 면 일치 하 는 데 실패 합 니 다.그렇지 않 으 면 문자 배열 pt 를 옮 겨 다 니 며 현재 문자 가 Map 에 저장 되 어 있 지 않 으 면 판단 할 문자열 배열 split 가 해당 하 는 위치 에 있 는 값 이 Map 에 대응 하 는 Value 에 저장 되 어 있 는 지 여 부 를 판단 합 니 다. 저장 되 어 있 으 면 일치 하지 않 습 니 다. 그렇지 않 으 면 현재 위치 에 대응 하 는 문자 와 문자열 을 Map 에 저장 합 니 다.현재 옮 겨 다 니 는 문자 가 Map 에 대응 하 는 key 에 저장 되 어 있 으 면 key 에 대응 하 는 value 가 비어 있 는 지 판단 하고 비어 있 지 않 으 면 현재 value 값 과 split 에 대응 하 는 값 이 같 는 지 판단 하고 같 으 면 계속 합 니 다. 그렇지 않 으 면 일치 하 는 데 실 패 했 습 니 다.옮 겨 다 니 는 문자 가 Map 에 대응 하 는 key 에 저장 되 어 있 지 않 으 면 value 에 split 에 대응 하 는 값 이 있 는 지 판단 하고 있 으 면 일치 하 는 데 실 패 했 습 니 다. 그렇지 않 으 면 현재 key 와 value 를 Map 에 추가 합 니 다.
(3) 자세 한 내용 은 아래 코드 를 보십시오.본문 이 너 에 게 도움 이 되 기 를 바란다.
import java.util.HashMap;
import java.util.Map;
public class Word_Pattern {
public static void main(String[] args) {
System.err.println(wordPattern("abba", "dog dog dog dog"));
}
public static boolean wordPattern(String pattern, String str) {
char[] pt = pattern.toCharArray();
String[] split = str.split(" ");
if (pt.length != split.length)
return false;
Map<Character, String> map = new HashMap<Character, String>();
for (int i = 0; i < pt.length; i++) {
if (!map.containsKey(pt[i])) {
if (map.values().contains(split[i])) {
return false;
} else {
map.put(pt[i], split[i]);
}
} else {
if (map.get(pt[i]) != null) {
if (map.get(pt[i]).equals(split[i])) {
continue;
} else {
return false;
}
} else {
if (map.values().contains(split[i])) {
return false;
} else {
map.put(pt[i], split[i]);
}
}
}
}
return true;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.