สมมติว่าเรามีสตริง s เราต้องหาคำทั้งหมดในแนวตั้งในลำดับเดียวกันกับที่ปรากฏใน s ที่นี่คำจะถูกส่งกลับเป็นรายการสตริง เราต้องเติมช่องว่างเมื่อจำเป็น (ไม่อนุญาตให้เว้นวรรค) แต่ละคำจะใส่ไว้เพียงคอลัมน์เดียว และในคอลัมน์เดียวจะมีเพียงคำเดียว ดังนั้นหากสตริงอินพุตคือ "HOW ARE YOU" ผลลัพธ์จะเป็น ["HAY", "ORO", "WEU"]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
s :=สร้างรายการสตริงที่แบ่งตามช่องว่าง สร้างอาร์เรย์ว่าง x หนึ่งชุด ตั้งแถว =0
-
สำหรับแต่ละคำที่ฉันอยู่ใน s ให้ตั้งค่าแถว :=สูงสุดของแถวและความยาวของ i
-
col :=ความยาวของ s
-
สร้างหนึ่งอาร์เรย์และเติมด้วยสตริงว่างและขนาดของมันคือแถว
-
สำหรับผมอยู่ในช่วง 0 ถึง col – 1
-
เจ :=0
-
ในขณะที่ j <ความยาวของ s[i]
-
ในขณะที่ i – ความยาวของ ans[j]>=1, do ans[j] :=ans[j] concatenate “ ”
-
ans[j] :=ans[j] concatenate s[i, j]
-
เพิ่มขึ้น 1
-
-
-
กลับมาอีกครั้ง
ตัวอย่าง (Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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")) อินพุต
"HOW ARE YOU" "TO BE OR NOT TO BE"
ผลลัพธ์
["HAY","ORO","WEU"] ["TBONTB","OEROOE"," T"]