Q:

Add labels to each subplots created using facet_wrap (ggplot2)

I am quite new to ggplot2 (and R) so bear with me.  Using facet_wrap, I have created a multi-panel plot.  I want to label them with alphabetical letters (starting with the top-left panel labelled with (A), and the next panel with (b) and so on.)  but I am not sure how to go about doing this.  I want this to be located outside of the plot (ideally at the top left of each panel). 
I came across grid.text and ggtitle, but I am not sure how I would implement these to get the desired outcome. 
I came across this post and with the given answers it seems possible to manually label each figure, but I would like the labelling to be done automatically, in order. 
I would deeply appreciate any advice/guides. 

A:

p <- qplot(displ, hwy, data = mpg) + facet_wrap(~ cyl) + 
    theme(panel.margin=unit(1,"line"))

library(gtable)
g <- ggplotGrob(p)
strips <- g$layout[grep("strip_t", g$layout$name), ]
titles <- lapply(paste0("(", letters[seq_len(nrow(strips))], ")"), 
                 textGrob, x = 0, hjust = 0, vjust = 1)
g <- gtable_add_grob(g, grobs = titles, 
                     t = strips$t, b = strips$b - 2, 
                     l = strips$l, r = strips$r)
grid.newpage()
grid.draw(g)

