문자열 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"]