Justify Frame Width in Python

PythonServer Side ProgrammingProgramming

Suppose we have a list of words, we have to frame it in a rectangular region, line by line. See the example for better understanding.

So, if the input is like ['hello','world', 'python', 'programming','nice'], then the output will be

***************
* hello       *
* world       *
* python      *
* programming *
* nice        *
***************

To solve this, we will follow these steps −

  • l:= length of maximum size word in the array
  • st:= put star (l+4) times
  • for each i in words, do
    • st := st concatenate '*' concatenate i then add space of size (l-size of i + 1) concatenate '*'
  • st:= concatenate star (l+4) times with st
  • return st

Let us see the following implementation to get better understanding −

Example

 Live Demo

class Solution:
   def solve(self, words):
      l=max(len(x) for x in words)
      st='*'*(l+4)+'\n'
      for i in words:
         st+='* '+i+' '*(l-len(i)+1)+'*'+'\n'
      return st+'*'*(l+4)
ob = Solution()
words = ['hello','world', 'python', 'programming','nice']
print(ob.solve(words))

Input

['hello','world', 'python', 'programming','nice']

Output

***************
* hello       *
* world       *
* python      *
* programming *
* nice        *
***************
raja
Updated on 23-Sep-2020 06:48:00

Advertisements