Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 세로로 단어 인쇄

<시간/>

문자열 s가 있다고 가정합니다. 우리는 s에 나타나는 것과 같은 순서로 모든 단어를 수직으로 찾아야 합니다. 여기서 단어는 문자열 목록으로 반환되며 필요할 때 공백으로 완성해야 합니다. (후행 공백은 허용되지 않습니다). 각 단어는 하나의 열에만 있고 한 열에는 하나의 단어만 있을 것입니다. 따라서 입력 문자열이 "HOW ARE YOU"이면 출력은 ["HAY", "ORO", "WEU"]

가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • s :=공백으로 분할된 문자열 목록 만들기, 하나의 빈 배열 x 만들기, 행 =0으로 설정

  • s의 각 단어 I에 대해 row :=max of row와 length of i

    를 설정합니다.
  • col :=s의 길이

  • 하나의 배열을 만들고 빈 문자열로 채우고 크기는 행

  • 범위 0에서 열 – 1에 있는 I

    • j :=0

    • 동안 j

      • 동안 i - 길이 ans[j]>=1, 수행 ans[j] :=ans[j] 연결 " "

      • ans[j] :=ans[j] s[i, j]

        연결
      • j를 1 증가

  • 반환

예제(파이썬)

더 나은 이해를 위해 다음 구현을 살펴보겠습니다. −

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"]