- 문장에서 가장 긴 단어 출력
split()
: 구분자를 기준으로 단어를 분리 후 String[]
에 담는다public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String string = sc.nextLine();
String[] split = string.trim().split("\\s+");
// 공백을 기준으로 하는 정규표현식
int len = Integer.MIN_VALUE; // 최솟값 설정
String word = "";
for (String s : split) {
if (len < s.length()){
len = s.length();
word = s;
}
}
System.out.println(word);
indexOf()
: 특정 문자나 문자열에서 해당하는 문자의 인덱스 값을 반환하고, 찾지 못했을 경우 '-1'을 반환 public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int m = Integer.MIN_VALUE ,pos;
String answer = "";
while ((pos = str.indexOf(' ')) != -1){
String tmp = str.substring(0, pos);
int len = tmp.length();
if (len > m){
m = len;
answer = tmp;
}
str = str.substring(pos + 1);
}
if (str.length() > m) answer = str;
System.out.println(answer);
}
(1) 공백의 위치를 인덱스로 반환하고 그 인덱스 전까지 substring
(2) str = str.substring(pos + 1) : 공백의 다음 문자열로 초기화 한 후, 공백 인덱스부터 다음 공백까지 자르기
(3) if (len > m) 여기서 if (len >=
m) 하면 가장 긴 문자열이 여러개일 때, 가장 뒤에 있는 문자열을 반환함
(4) if (str.length() > m) answer = str : 마지막 단어 뒤에는 공백이 없으므로 마지막 단어는 생략이 되는데, 이를 막기 위해 설정
StringTokenizer
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int max = 0;
String result = "";
while (st.hasMoreTokens()){
String token = st.nextToken();
int length = token.length();
if (length > max){
max = length;
result = token;
}
}
System.out.println(result);
}
}