[Hackerrank] Strings - Comparisons 풀이

예문


https://www.hackerrank.com/challenges/java-string-compare/problem

Sample Input 0

welcometojava
3

Sample Output 0

ava
wel

Explanation 0

String has the following lexicographically-ordered substrings of length :

We then return the first (lexicographically smallest) substring and the last (lexicographically largest) substring as two newline-separated values (i.e., ava\nwel).

The stub code in the editor then prints ava as our first line of output and wel as our second line of output.


해석

  • 문자열 비교

input

첫번째 줄 : 문자열
두번재 줄 : 비교할 문자의 크기
  • 문자열은 알파벳 순
  • 입력 문자열은 [a-zA-Z] 만 포함됨.

output

첫째줄 : 가장 작은 순서의 문자열
둘째줄 : 가장 높은 순서의 문자열

풀이

  • String compareTo 사용

제약사항

  • 1 <= |s| <= 1000
  • s : [a-zA-Z]

코드

public static String getSmallestAndLargest(String s, int k) {
  String smallest = s.substring(0, k);
  String largest = smallest;

  String tempStr;
  for (int i = 0; i <= s.length() - k; i++) {
    tempStr = s.substring(i, i + k);
    if (tempStr.compareTo(smallest) < 0) {
      smallest = tempStr;
    }
    if (tempStr.compareTo(largest) > 0) {
      largest = tempStr;
    }
  }
  return smallest + "\n" + largest;
}