পাঠ্য সমর্থন  


কাঠিন্য মাত্রা কঠিন
প্রায়শই জিজ্ঞাসা করা হয় মর্দানী স্ত্রীলোক Coursera গুগল প্রকৃতপক্ষে লিঙ্কডইন মাইক্রোসফট পিন্টারেস্ট Snapchat
স্ট্রিং

সমস্যা বিবৃতি  

"টেক্সট জাস্টিফিকেশন" সমস্যাটি আপনাকে জানিয়েছে যে আপনাকে [গুলি] টাইপের একটি তালিকা দেওয়া হয়েছে স্ট্রিং আকার এন এবং একটি পূর্ণসংখ্যা আকার। পাঠ্যের ন্যায়সঙ্গত করুন যে পাঠ্যের প্রতিটি লাইনে আকারের সংখ্যা থাকে। একটি রেখায় প্রয়োজনীয় সংখ্যার অক্ষর সম্পূর্ণ করতে আপনি অক্ষর হিসাবে স্থান ('') ব্যবহার করতে পারেন।

পাঠ্য সমর্থনপিন  

উদাহরণ  

s = {"TutorialCup", "is", "the", "best", "portal", "for", "programming."}
size = 12
TutorialCup
is  the best
portal   for
programming.

ব্যাখ্যা: আমরা শব্দের মধ্যবর্তী স্থান যেমন ব্যবহার করতে পারি, উপরের এমবেড করা চিত্রটিতে দেখা যায় আমরা সেগুলি যথাযথভাবে রেখেছি।

s = {"This", "article", "is", "contributed", "by", "Akshita", "Jain"}
size = 13
This  article
is
contributed
by    Akshita
Jain

পাঠ্য বিচারের জন্য অ্যালগরিদম  

  1. প্রকারের একটি তালিকা [] শুরু করুন স্ট্রিং আকার এন এবং একটি পূর্ণসংখ্যা পরিবর্তনশীল আকার।
  2. তালিকার মধ্য দিয়ে অতিক্রম করুন এবং বর্তমান শব্দের দৈর্ঘ্য প্রদত্ত আকারের চেয়ে কম বা সমান হলে প্রতিটি শব্দ / স্ট্রিং পরীক্ষা করে দেখুন, ফলাফলটি বর্তমান শব্দটি যুক্ত করুন।
  3. অন্যথায় যদি বর্তমান স্ট্রিং / শব্দের দৈর্ঘ্য প্রদত্ত আকারের চেয়ে বেশি হয় তবে লাইনটির অবশিষ্ট অবস্থানগুলি সম্পূর্ণ করতে সাদা স্পেস ব্যবহার করুন।
  4. যদি একই লাইনে পরবর্তী শব্দের দৈর্ঘ্যের যোগফল এবং একই লাইনে পূর্ববর্তী শব্দের দৈর্ঘ্যের প্রদত্ত আকারের চেয়ে কম বা সমান হয় তবে ফলাফলটির সাথে বর্তমান শব্দটি যুক্ত করুন এবং বাকী জায়গাগুলিকে সাদা দিয়ে সামঞ্জস্য করুন স্থান।
  5. অন্যথায় যদি একই লাইনে পরবর্তী শব্দের দৈর্ঘ্যের এবং একই লাইনে পূর্ববর্তী শব্দের দৈর্ঘ্যের যোগফল প্রদত্ত আকারের চেয়ে বেশি হয়, ফলাফলের পরবর্তী লাইনে বর্তমান শব্দটি যুক্ত করুন এবং অবশিষ্ট স্থানগুলি পূরণ করুন সাদা স্থান সঙ্গে বর্তমান লাইন।
  6. ফলস্বরূপ স্ট্রিং মুদ্রণ করুন।
আরো দেখুন
লেটার কেস পারমিটেশন

কোড  

সি ++ টেক্সট জাস্টিফিকেশন প্রোগ্রাম

#include "bits/stdc++.h" 
using namespace std; 
  
string getSpaces(int n){
    string s = "";
    for(int i=0; i<n;i++) s += " ";
    return s; 
}

string getLine(vector<string>& words, int start, int end, int letterCount, int maxWidth){
    string res = words[start];
    int spaces = maxWidth - letterCount;
    
    if(start == end){ 
        res += getSpaces(spaces);
        return res;
    }
    
    int numOfSpace = spaces/(end-start);
    int extraOne = spaces%(end-start);
    string space0 = getSpaces(numOfSpace);
    string space1 = space0 + " "; 
    
    for(int i= 0; i< end-start; i++){
        res  = res + (i < extraOne? space1: space0) + words[start + 1 + i];
    }
    return res; 
}

vector<string> fullJustify(vector<string>& words, int maxWidth) {
    int N = words.size(); 
    int i = 0, j = 0;
    int counter = 0; 
    vector<string> res; 
    
    while(i<N && j<N){
        int len = words[j].length(); 
        counter += len;
        
        if(counter + j - i > maxWidth){
            counter -= len; 
            res.push_back(getLine(words, i, j-1, counter, maxWidth));
            i = j; 
            counter = 0; 
        }
        
        else{
            j++;
        }
    }
    
    if(counter){
        string last = words[i];
        
        for(int x=i+1; x < j; x++){ 
            last = last + " " + words[x];
        }
        
        last = last + getSpaces(maxWidth - last.size());
        res.push_back(last);
    }

    return res; 
}

int main(){
    vector<string> s = {"TutorialCup", "is", "the", "best", "portal", "for", "programming."};
    int size = 12;
    
    vector<string> lines = fullJustify(s, size); 
    
    for(auto x: lines)
        cout << x << endl;
    
    return 0; 
}
TutorialCup 
is  the best
portal   for
programming.

পাঠ্য জাস্টিফিকেশন জাভা প্রোগ্রাম

import java.util.*;

class TextJustification{
    
    static List<String> fullJustify(String[] words, int maxWidth) {
        List<String> res = new ArrayList<>();
        int size = words.length;
        int index = 0;
        
        while (index < size){
            int totalChars = words[index].length();
            int lastIndex = index + 1;
            int gaps = 0;
            
            while (lastIndex < size){
                if (totalChars + 1 + words[lastIndex].length() > maxWidth){
                    break;
                }
                totalChars += 1 + words[lastIndex++].length();
                gaps++;
            }
            
            StringBuilder sb = new StringBuilder();
            
            if (lastIndex == size || gaps == 0){
                for (int i = index; i < lastIndex; ++i){
                    sb.append(words[i]).append(' ');
                }
                sb.deleteCharAt(sb.length() - 1);
                while (sb.length() < maxWidth){
                    sb.append(' ');
                }
            } 
            
            else {
                int spaces = (maxWidth - totalChars) / gaps;
                int restSpaces = (maxWidth - totalChars) % gaps;
                for (int i = index; i < lastIndex - 1; ++i){
                    sb.append(words[i]).append(' ');
                    for (int j = 0; j < spaces + (i - index < restSpaces ? 1 : 0); ++j){
                        sb.append(' ');
                    }
                }
                sb.append(words[lastIndex - 1]);
            }
            
            res.add(sb.toString());
            index = lastIndex;
        }
        return res;
    }
  
  public static void main (String[] args){
      
      String[] words = {"TutorialCup", "is", "the", "best", "portal", "for", "programming."};
      int size = 12;
      
      List<String> res = new ArrayList<String>();
      res = fullJustify(words, size);
      ListIterator<String> lItr = res.listIterator();
      
      while (lItr.hasNext()){
          System.out.println(lItr.next());
      }
  }
}
  
TutorialCup 
is  the best
portal   for
programming.

জটিলতা বিশ্লেষণ  

সময় জটিলতা

O (n) যেখানে n হল প্রদত্ত স্ট্রিং অ্যারেগুলির আকার []। আমরা চলছি ক লুপ করার সময় পুরো জাস্টিফাইয়ের ভিতরে যা কেবলমাত্র i এবং j ভেরিয়েবলের দুটিই N অতিক্রম না করা পর্যন্ত চলবে এবং এই লুপটি শেষ হতে লিনিয়ার সময় নেয়। সুতরাং সময় জটিলতা রৈখিক হয়।

আরো দেখুন
মোবাইল সংখ্যাযুক্ত কীপ্যাড সমস্যা

স্পেস জটিলতা ity

ও (এন) কারণ আমরা এন স্ট্রিং সঞ্চয় করার জন্য জায়গা ব্যবহার করেছি।