[Problem]
We define the following terms:
-
Lexicographical Order, also known as alphabetic or dictionary order, orders characters as follows:
A < B < ... < Y < Z < a < b < ... < y < z
For example, ball < cat, dog < dorm, Happy < happy, Zoo < ball.
- A substring of a string is a contiguous block of characters in the string. For example, the substrings of abc are a, b, c, ab, bc, and abc.
Given a string, s, and an integer, k, complete the function so that it finds the lexicographically smallest and largest substrings of length .
Input Format
The first line contains a string denoting s.
The second line contains an integer denoting k.
Constraints
- 1 ≤ |s| ≤ 1000
- s consists of English alphabetic letters only (i.e., [a-zA-Z]).
Output Format
Return the respective lexicographically smallest and largest substrings as a single newline-separated string.
Sample Input 0
welcometojava
3
Sample Output 0
ava
wel
Explanation 0
String s = "welcometojava" has the following lexicographically-ordered substrings of length k = 3:
["ava", "com", "elc", "eto", "jav", "lco", "met", "oja", "ome", "toj", "wel"]
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.
[Soultion]
import java.util.Scanner;
public class Solution {
public static String getSmallestAndLargest(String s, int k) {
String smallest = "";
String largest = "";
// Complete the function
// 'smallest' must be the lexicographically smallest substring of length 'k'
// 'largest' must be the lexicographically largest substring of length 'k'
smallest = largest = s.substring(0, k);
for ( int i = 1; i < s.length() - k + 1; ++i ) {
String temp = s.substring(i, i+k);
if ( smallest.compareTo(temp) > 0 ) {
smallest = temp;
}
if ( largest.compareTo(temp) < 0 ) {
largest = temp;
}
}
return smallest + "\n" + largest;
}
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
String s = scan.next();
int k = scan.nextInt();
scan.close();
System.out.println(getSmallestAndLargest(s, k));
}
}
[Problem]
A palindrome is a word, phrase, number, or other sequence of characters which reads the same backward or forward.(Wikipedia)
Given a string A, print Yes if it is a palindrome, print No otherwise.
Constraints
- A will consist at most 50 lower case english letters.
Sample Input
madam
Sample Output
Yes
[Solution]
import java.io.*;
import java.util.*;
public class Solution {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
String A=sc.next();
/* Enter your code here. Print output to STDOUT. */
StringBuffer buffer = new StringBuffer();
buffer.append(A);
String RA = buffer.reverse().toString();
if ( A.equals(RA) ) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
'Java' 카테고리의 다른 글
[Java] HackerRank_Java 1D Array (Part 2) (0) | 2020.11.19 |
---|---|
[Java] HackerRank_Java Static Initializer Block과 Date and Time (0) | 2020.11.19 |
[Java] HackerRank_Java If-Else와 Loops (0) | 2020.11.18 |
[Java] 스프링(Spring) 보안(Security) (0) | 2020.10.02 |
[Java] 스프링(Spring) JDBC(Java Database Connectivity)와 트랜잭션(Transaction) (0) | 2020.10.02 |