Problem
1. 이 질문은 대문자로 구성된 문자열에 대한 추론을 포함합니다. 동일한 클래스(표시되지 않음)에 나타나는 두 가지 관련 메서드를 구현합니다. 첫 번째 메서드는 단일 문자열 매개변수를 사용하고 해당 문자열의 뒤섞인 버전을 반환합니다. 두 번째 방법은 문자열 목록을 가져와서 목록의 각 항목을 스크램블링하여 목록을 수정합니다. 스크램블할 수 없는 항목은 목록에서 제거됩니다.
a) scrambleWord 메서드를 작성하세요. 이 메서드는 주어진 단어를 받아서 다음 규칙에 따라 스크램블된 단어 버전을 포함하는 문자열을 반환합니다.
- 뒤섞기 과정은 단어의 첫 글자에서 시작하여 왼쪽에서 오른쪽으로 계속됩니다.
- 두 개의 연속된 문자가 "A"로 구성된 경우 "A"가 아닌 문자가 뒤에 오면 결과 문자열에서 두 문자가 바뀝니다.
- 인접한 두 위치의 문자가 교체되면 두 위치 중 어느 것도 향후 교체에 관여할 수 없습니다.
다음 표는 단어와 스크램블된 버전의 몇 가지 예를 보여줍니다.
<몸>
단어 |
scrambleWord(word)가 반환한 결과 |
"TAN" |
"TNA" |
'아브라카다브라' |
"BARCADABARA" |
"후아" |
"후아" |
"AARDVARK" |
"ARADVRAK" |
"달걀" |
"달걀" |
"A" |
"A" |
"" |
"" |
테이블>
아래의 완전한 방법 scrambleWord.
/** 주어진 단어를 뒤섞습니다.
* @param word 스크램블할 단어
* @뒤섞인 단어 반환(단어와 같을 수 있음)
* 전제 조건: 단어는 빈 문자열이거나 대문자만 포함합니다.
* 사후 조건: 반환된 문자열은 다음과 같이 단어에서 생성되었습니다.
* - 첫 글자부터 시작하여 왼쪽에서 오른쪽으로 단어가 섞였습니다.
* - "A"로 구성된 두 개의 연속 문자 "A"가 아닌 문자가 뒤따릅니다. 교체되었습니다
* - 문자가 최대 한 번 교체됨
<엠> */엠>
public 정적 문자열 scrambleWord(String 단어)
b) 매개 변수 wordList의 각 단어를 스크램블된 버전으로 바꾸고 스크램블링 후 변경되지 않은 단어를 제거하는 scrambleOrRemove 메서드를 작성합니다. wordList 항목의 상대적 순서는 scrambleOrRemove를 호출하기 전과 동일하게 유지됩니다.
다음 예는 scrambleOrRemove 호출의 결과로 wordList의 내용이 수정되는 방법을 보여줍니다.
scrambleOrRemove 호출 전:
단어 목록
<몸>
0 |
1 |
2 |
3 |
4 |
"TAN" |
"아브라카다브라" |
"후아" |
"애플" |
"달걀" |
테이블>
scrambleOrRemove 호출 후:
단어 목록
<몸>
0 |
1 |
2 |
"TAN" |
"BARCADABARA" |
"PAPLE" |
테이블>