import java.util.ArrayList; /** * @author Chris Thiel,OFMCap * @version 8 May 2008 */ public class StringCoder { private String masterString; /** * Constructor for objects of class StringCoder */ public StringCoder() { masterString="sixtyzipperswerequicklypickedfromthewovenjutebag"; } public StringCoder(String master) { masterString=master; } /** @param parts an ArrayList of string parts that are * valid in the master string * Precondition: parts.size() > 0 * @return the string obtained by concatenating the parts * of the master string */ public String decodeString(ArrayList parts) { // part a } private StringPart findPart(String str) { int start=0; int length=0; for (int len=1; len<=str.length(); len++) { int found=masterString.indexOf(str.substring(0,len)); if (found!=-1) { start=found; length=len; } } return new StringPart(start, length); } /** @param word the string to be encoded * Precondition: all of the characters in word * appear in the master string; * word.length() > 0 * @return an ArrayList of string parts of the master * string that can be combined * to create word */ public ArrayList encodeString(String word) { // part b } public static void main(String[] args) { ArrayList overeager=new ArrayList(); overeager.add(new StringPart(37,3) ); overeager.add(new StringPart(14,2) ); overeager.add(new StringPart(46,2) ); overeager.add(new StringPart(9,2) ); System.out.println("overeager is encoded as "+overeager); StringCoder key=new StringCoder("sixtyzipperswerequicklypickedfromthewovenjutebag"); System.out.println("Decoding we get "+key.decodeString(overeager)); System.out.println("Using part b overeager is encoded as "+key.encodeString("overeager")); } }