이것은 우리의 코드입니다. 우리는 그들을 역순으로 인쇄하고 싶습니다. 그래서 한 줄이면 : 예, 4 초콜렛 우유. 우리는 인쇄하고 싶습니다 : 밀크 초콜릿 4 예.자바 문자열의 반전 단어
우리 코드는 역순으로 단어를 인쇄하므로 yes가 sey가됩니다. 우리는 그것이 그렇게되기를 원하지 않지만 그것을 어떻게 바꿀 것인지 모른다. 우리는 스택을 만드는 것에 대해 생각해 왔지만 패턴 및 매처와 함께 작동하는 방식은 아닙니다.
이것은 우리의 코드입니다. 우리는 그들을 역순으로 인쇄하고 싶습니다. 그래서 한 줄이면 : 예, 4 초콜렛 우유. 우리는 인쇄하고 싶습니다 : 밀크 초콜릿 4 예.자바 문자열의 반전 단어
우리 코드는 역순으로 단어를 인쇄하므로 yes가 sey가됩니다. 우리는 그것이 그렇게되기를 원하지 않지만 그것을 어떻게 바꿀 것인지 모른다. 우리는 스택을 만드는 것에 대해 생각해 왔지만 패턴 및 매처와 함께 작동하는 방식은 아닙니다.
읽은 줄을 바꾸지 말고 줄을 모음으로 나눠서 역순으로 사용하지 마십시오. 당신은 당신이 얻을 수 있도록 문자를 반대로하면됩니다 무엇 :
Yes, 4 Chocolate milk -> klim etalocohC 4 , seY
당신이 그 배열/목록을 되돌릴 수 ["Yes","4","Chocolate milk"]
에 선을 분할합니다.
문제는 다음과 같습니다. Chocolate milk
을이 순서로 유지하려는 것입니다. 따라서 함께 속하는 단어를 정의해야합니다. 입력이 항상 <words>, <number> <words>
인 경우 먼저 ,
으로 분할하여 첫 번째 <words>
을 분리 한 다음 나머지 부분의 첫 번째 공백을 두어 숫자와 두 번째 숫자를 분리합니다. <words>
.
업데이트이 시도가 :
String input = "Yes sir, 4 Chocolate milk";
//Pattern is:
//- one or more words separated by whitespace as group 1: ((?:\\w+\\s*)+)
//- a comma
//- optional whitespace: \\s*
//- an integer number as group 2: (\\d+)
//- optional whitespace \\s*
//- an arbitrary rest (which might contain anything) as group 3: (.*)
Pattern p = Pattern.compile("((?:\\w+\\s*)+),\\s*(\\d+)\\s*(.*)");
Matcher m = p.matcher(input);
List<String> list = new ArrayList<String>();
while(m.find()) {
list.add(m.group(1));
list.add(m.group(2));
list.add(m.group(3));
}
Collections.reverse(list);
for(String s : list) {
System.out.println(s);
}
출력이 당신의 입력의 레이아웃에 따라 단지 시작을 제공하기위한 것이
Chocolate milk
4
Yes sir
주의해야한다. 또한 다른 패턴 일치 로직과 통합해야합니다.
Scanner
또는 간단히 String.split()
을 사용하여 줄에 모든 토큰의 Array
또는 Collection
을 만드십시오. 그런 다음 for
-loop을 사용하여 뒤로 반복하여 선을 다시 만듭니다. 또한 이것을 달성하기 위해 Collections.reverse()
을 사용할 수 있습니다.
문자열을 단어 단위로 분할하고 결과를 문자열 배열에 저장 한 다음 마지막 요소부터 첫 번째 요소까지의 문자열을 표시합니다. 코드 :
public static void main(String[] args) {
String hello = "bananas 45 guns me likes 3";
String[] reverse_me = hello.split(" ");
// the -1 is because the index starts in zero :-0)
for(int i = reverse_me.length-1; i >= 0 ; i--){
System.out.println(reverse_me[i]);
}
}
출력이 숙제
3
likes
me
guns
45
bananas
인가? 그렇다면 태그를 붙이십시오. –
나는 모든 단어를 스플릿 ("")으로 파싱 할 것이다. 해시 맵에 넣고 역순으로 사용하십시오. 내 생각에, 그것은 텍스트를 뒤집는 가장 빠른 방법 일 것입니다. – Racooon
출력 예제에서 "초콜릿 초유 4 예"가 아닌 "우유 초코 4 예"가 아닌 이유는 무엇입니까? 그건 신중한가요? 그렇다면 알고리즘이 알고리즘을 어떻게 인식해야합니까? – amit