WordPairList free response problem from the 2018 AP Computer Science A Exam.

WordPairList is #2 from the from the 2018 AP Computer Science A Free Response problems.

https://secure-media.collegeboard.org/ap/pdf/ap18-frq-computer-science-a.pdf

## Part (a) – WordPairList constructor

```public WordPairList(String[] words)
{
allPairs = new ArrayList<WordPair>();

for(int i = 0; i < words.length; i++)
for(int j = i + 1; j < words.length; j++)
}
```

## Part (b) – numMaches method

```public int numMatches()
{
int matches = 0;

for(WordPair wp : allPairs)
if(wp.getFirst().equals(wp.getSecond()))
matches++;

return matches;
}
```

## 7 thoughts on “WordPairList free response answer”

1. Angel Perez

Shouldn’t i < words.length – 1 for WordPairList?

• Brandon Horn

It could be, but since j starts at i+1 anyway, it doesn’t matter.

My thought process was: Visit each word then visit the words after it. I wrote the code based on that. The last word has no words after it.

I could definitely see: Visit each word except the last…

2. Angel Perez

What if length is, say, 5. i would go from 0 to 4, wouldn’t j try to access 4+1 giving out of bounds?

• Brandon Horn

No. The loop condition is checked prior to the first run of the loop body. j would be set to an invalid index, but the body of the inner loop would never run and the invalid index would never be accessed.

3. Angel Perez

Ah, never mind. I see. Thank you.

4. Jishan

I forgot I dealing with objects. So for part a I have everything same as you. However, I had

And for part b, I forgot wordPairList is an object and treated it as a string arraylist
int count;
for(int i = 0; i < allPairs.length-1;i+=2){
if(words.get(i).equals(words.get(i+1))){
count++;
}
}
return count;

Do you think I lost a lot of points because I misinterpreted the question ?

5. Ben R

I used an array instead of an array list, with length of the wordlist. I know that its not the best way to do it. would i get full credit or not, and if not what would the deductions be for. I mean everything would work as intended, the only difference is that the array would have extra empty spots. I guess it may be -1, but could they take off more points and does an array cause any other errors?