Step 1: Since the third row shows a ‘4’, the buildings MUST be in ascending height order for all four of them to be visible.

 

Step 2: The third column has a ‘1’ at the bottom, indicating that the tallest building (D) must be obscuring the other 3 from that bottom position.

 

Step 3: In order to have three visible buildings in the bottom row, BCDA is the only possible combination. This is because the ‘A’ cannot go in the first column (putting more than one ‘A’ in that column, which is not allowed), and the ‘A’ cannot go in the second column (or there would be no way to have three visible buildings across the bottom row).

 

Step 4: Since A & B have already been used in the first column, the other two spaces must contain C & D (in that order, to give us two visible buildings from the top position).

 

Step 5: We can now begin filling in the missing letters for the other columns, using typical Sudoku-style logic (based on which letters are remaining to have all letters