Copyright © Cay S. Horstmann, Kathleen O’Brien 2009-2014
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
oddCount
and evenCount
), what is the Java code for creating an array of length 2 and returning both counts in the array?Your task is to design and implement a program that removes adjacent duplicates. This class reads a file and puts all words into an ArrayList<String>
called words
. Your task is to complete the method removeAdjacentDuplicates
to remove all adjacent duplicates in words
. Develop a plan and write pseudocode for this task. Questions to think about. Scribe: How do you plan to find duplicates? Scribe: What will you do when you find them? Pay special attention to what happens at the beginning or end of the array list. Show your lab instructor your pseudocode before doing the next step.
You must unzip the zip file. Don't simply move the zip into your BlueJ directory.
Make a Text
object on the BlueJ workbench. Right-click and call pick
. Pick the file typo.txt. Right-click and call removeAdjacentDuplicates
(i.e. your method). Right-click and call explore
. . Scribe: Is the duplicate “be” removed?
Driver: In your lab report, paste the correct solution.
Mary had a little lamb little lamb little lamb Mary had a little lamb whose fleece was white as snow And everywhere that Mary went Mary went Mary went And everywhere that Mary went the lamb was sure to go
you should produce the array list
Mary had a little lamb whose fleece was white as snow And everywhere that went the sure to go
Decide upon an algorithm and write down the pseudocode.
Scribe: Ask yourselves:
removeAllDuplicates
to the Text
class. Implement the method and test it as described above.
Scribe: Did you pass all tests? If not, what did you do to fix your code
The code on lines 20 to 24 is intended to swap neighboring elements. For example,
1 4 9 16 25 36
is supposed to turn into
4 1 16 9 36 25
But as you can see, it doesn't work. Now launch the BlueJ debugger. Put a breakpoint at line 20. Click Step. And then keep clicking Step and observe the program behavior until you can tell why it fails to swap the values.
Tip: To see the contents of the array, double-click on it in the Local Variables pane.
How you can fix your program so that the swapping actually works? Scribe: What did you decide?
Driver: Put the fixed code in your lab report.
main
method in the Lab11D
class. Note that a VisualArrayList
is exactly like an ArrayList
, except it shows you in slow motion what goes on inside.
For example, A B C D E F
should turn into D E F A B C
.
You should assume that the array list has an even number of elements (not necessarily 6).
One solution is to keep removing the element at index 0 and adding it to the back.
A B C D E F B C D E F A C D E F A B D E F A B C
Write pseudocode for this algorithm.
Ask yourselves:
Driver: Paste the main
method into your lab report.
remove(0)
causes n - 1 elements to move, where n is the length of the array. If n is 100, then you move 99 elements 50 times, (almost 5000 move operations). That's an inefficient way of swapping the first and second halves. Come up with a better way in which you swap the elements directly. Hint: How do you swap elements at index1 and index2?
A B C D E F D B C A E F D E C A B F D E F A B C
Write pseudocode for this algorithm.
Ask yourselves (Scribe: record the answers):
Driver: Paste the main
method into your lab report. Watch how much faster it runs. (This should be pretty obvious since the movement of the array elements takes time.)
Add four more letters and run the program again to double-check that it works with any even number of letters.