Java

[Java] HackerRank_Java Substring Comparisons과 String Reverse

구루싸 2020. 11. 20. 17:48
반응형
SMALL

[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
  • 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

  • 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");
        }
        
    }
}
반응형
LIST