In this HackerRank java String Tokens problem in the java programming language you have Given a string, S, 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.


HackerRank Java String Tokens problem solution


HackerRank Java String Tokens problem solution.

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {
    public static void main(String[] args) {
         Scanner sc = new Scanner(System.in);
         String S = sc.nextLine();
         String[] tokens = S.split("[^a-zA-Z]");
         int numTokens = 0;
        
         for (int i=0; i<tokens.length; ++i) 
             if (tokens[i].length() > 0) 
                 numTokens++;
             
         System.out.println(numTokens);
        
         for (int i=0; i<tokens.length;++i)
             if (tokens[i].length() > 0)
                 System.out.println(tokens[i]);
    }
}


Second solution

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner asdf = new Scanner(System.in);
        String a [] = asdf.nextLine().split("[ \"!,?._'@\". ]");
        int size = a.length;        
        for(int i = 0; i < a.length; i++){
            if(a[i].compareTo("") == 0){
                size = size - 1;
            }
            
        }
        System.out.println(size);
        for(int i = 0; i < a.length; i++){
            if(a[i].compareTo("") != 0){
                System.out.println(a[i]);
            }
            
        }
    }
}


A solution in java8 programming.

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

public class Solution {

    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        s=s.replaceAll("[^a-z A-Z]"," ");
       s=s.replaceAll("\\s+"," ");
       s=s.trim();

        String [] arr=s.split(" ");

        if(s.length()>0){
        System.out.println(arr.length);
        for (String i:arr)
        {
        System.out.println(i);
        }
        }
        else
        System.out.println(0);
        scan.close();
    }
}