Giả sử chúng ta có một chuỗi s. Chúng ta phải tìm tất cả các từ theo chiều dọc theo cùng thứ tự mà chúng xuất hiện trong s. Ở đây các từ được trả về dưới dạng danh sách các chuỗi, chúng ta phải điền dấu cách khi cần thiết. (Không cho phép dấu cách ở cuối). Mỗi từ sẽ chỉ được đặt trên một cột và trong một cột sẽ chỉ có một từ. Vì vậy, nếu chuỗi đầu vào là "BẠN THẾ NÀO", thì đầu ra sẽ là ["HAY", "ORO", "WEU"]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
s:=tạo danh sách các chuỗi được chia theo khoảng trắng, tạo một mảng trống x, đặt hàng =0
-
cho mỗi từ I trong s, hãy đặt hàng:=tối đa của hàng và độ dài của tôi
-
col:=độ dài của s
-
tạo một mảng và chứa đầy chuỗi trống và kích thước của nó là hàng
-
cho I trong phạm vi 0 đến col - 1
-
j:=0
-
trong khi j <độ dài của s [i]
-
while i - length of ans [j]> =1, do ans [j]:=ans [j] concatenate “”
-
ans [j]:=ans [j] nối s [i, j]
-
tăng j lên 1
-
-
-
trả lại ans
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -
class Solution(object): def printVertically(self, s): s = s.split(" ") x = [] row = 0 for i in s: row = max(row, len(i)) col = len(s) ans = ["" for i in range(row)] j = 0 for i in range(col): j = 0 while j < len(s[i]): #print(j, i) while i - len(ans[j]) >= 1: ans[j] += " " ans[j] += s[i][j] j += 1 return ans ob = Solution() print(ob.printVertically("HOW ARE YOU")) print(ob.printVertically("TO BE OR NOT TO BE"))
Đầu vào
"HOW ARE YOU" "TO BE OR NOT TO BE"
Đầu ra
["HAY","ORO","WEU"] ["TBONTB","OEROOE"," T"]