Problem : Given an input string , separate the input string into a space-separated sequence of dictionary words if possible. For example, if the input string is "helloworld" then we would return the string "hello world" as output.
Assume you are given a Dictionary against which you can check the validity of words. Print "String can not be separated" if it contains numbers , any special character or any invalid combination of character/word.
Solution in java
/** * Created by IN00474 on 22-12-2014. */ import java.util.*; public class StringToSentence { static List<String> l = new ArrayList<String>(); static String wordToCheck = ""; public static void main(String[] args) { if (args.length==0) { System.out.println("Pass the input String"); System.exit(1); } String inputString = args[0]; if (inputString.matches("[a-zA-Z]+")) { for (int i = 0; i < inputString.length(); i++) { wordToCheck = wordToCheck + inputString.charAt(i); if (checkInDictionary(wordToCheck)) { l.add(wordToCheck); wordToCheck = ""; } else { if(i==inputString.length()-1) { System.out.println("String can not be sorted"); return; } } } displaySentence(l); } else { System.out.println("String can not be sorted"); } } public static boolean checkInDictionary(String wordToCheck) { ArrayList al = new ArrayList(); al.add("hello"); al.add("world"); if (al.contains(wordToCheck)) { return true; } else { return false; } } public static void displaySentence(List l) { Iterator i = l.iterator(); while (i.hasNext()) { System.out.print((String) i.next() + " "); } } }
Please note this code was tested against multiple use cases and return correct results, let us know if any of the use case if fails to pass.
Run time result