Type Here to Get Search Results !

Java String Tokens | HackerRank Solution By CodingHumans |

0

Java String Tokens

Hint

Three issues need to be noticed in order to solve all cases:
1) Trim the string
2) handle string.length() > 400000 => don't print anything
3) handle string.length() == 0 => print "0"

Problem 

Given a string, , matching the regular expression [A-Za-z !,?._'@]+, split the string into tokens. We define a token to be one or more consecutive English alphabetic letters. Then, print the number of tokens, followed by each token on a new line.

Note: You may find the String.split method helpful in completing this challenge.

Input Style

A single string,s .

Constraints

1<=length of s <=4.10^5

 s is composed of any of the following: English alphabetic letters, blank spaces, exclamation points (!), commas (,), question marks (?), periods (.), underscores (_), apostrophes ('), and at symbols (@).

Output Format

On the first line, print an integer,n , denoting the number of tokens in string s  (they do not need to be unique). Next, print each of the n tokens on a new line in the same order as they appear in input string.

Sample Input

He is a very very good boy, isn't he?

Sample Output

10
He
is
a
very
very
good
boy
isn
t
he

Explanation


We consider a token to be a contiguous segment of alphabetic characters. There are a total of  10 such tokens in string , and each token is printed in the same order in which it appears in string s .




Recommended: Please try your approach on your integrated development environment (IDE) first, before moving on to the solution.

Few words from CodingHumans : Don't Just copy paste the solution, try to analyze the problem and solve it without looking by taking the the solution as a hint or a reference . Your understanding of the solution matters.


HAVE A GOOD DAY 😁



Solution
( Java )


import java.io.*;
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        scan.useDelimiter("\\Z");
        String s = scan.next().trim();
        if(s.length()>0){
        String[]tokens=s.split("[!,?._'@\\s]+");
        System.out.println(tokens.length);
        for(String token :tokens){
            System.out.println(token);
        }
        }
        else{
            System.out.println("0");
            scan.close();
        }
       
}
}

If you have any doubts regarding this problem or  need the solution in other programming languages then leave a comment down below .

Post a Comment

0 Comments

Top Post Ad

Below Post Ad