কম্পিউটার

C++ এ পূর্ণসংখ্যা (atoi) থেকে স্ট্রিং


ধরুন আমাদের একটি মডিউল ডিজাইন করতে হবে, যেটি প্রথমে যতগুলি হোয়াইটস্পেস অক্ষর প্রথম নন-হোয়াইটস্পেস অক্ষর না পৌঁছানো পর্যন্ত প্রয়োজন ততগুলি বাতিল করে। এর পরে, এই অক্ষর থেকে শুরু করে, এটি একটি ঐচ্ছিক প্রারম্ভিক যোগ চিহ্ন বা বিয়োগ চিহ্ন নেয় এবং তার পরে যতগুলি সংখ্যাসূচক অঙ্ক থাকে, এবং তাদের একটি সংখ্যাসূচক মান হিসাবে ব্যাখ্যা করে৷

যখন str-এ নন-হোয়াইটস্পেস অক্ষরগুলির প্রথম ক্রমটি একটি বৈধ অবিচ্ছেদ্য সংখ্যা নয়, বা যখন এই জাতীয় কোনও ক্রম বিদ্যমান নেই কারণ হয় str খালি থাকে বা এতে কেবল সাদা স্থান থাকে, তখন কোনও রূপান্তর করা হবে না৷

সুতরাং ইনপুট যদি "-45" এর মত হয়, তাহলে আউটপুট হবে -45।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • চিহ্ন :=1, ভিত্তি :=0, i :=0, n :=স্ট্রিং এর আকার
  • যখন i
  • যদি প্রথম অক্ষর হয় – তাহলে সাইন করুন :=-1, অন্যথায় সাইন করুন :=1
  • যখন s[i] রেঞ্জ '0' থেকে '9'
    • প্রতিটি অক্ষর পড়ুন এবং এটিকে একটি পূর্ণসংখ্যাতে রূপান্তর করুন, তারপর প্রতিটি অক্ষরের জন্য বেস বাড়িয়ে ভিত্তি গণনা সামঞ্জস্য করুন৷
  • নম্বরটি ফেরত দিন * চিহ্ন

উদাহরণ(C++)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int myAtoi(string str) {
      int sign = 1;
      int base = 0;
      int i = 0;
      int n = str.size();
      while(i < n && str[i] == ' '){
         i++;
      }
      if(str[i] == '-' || str[i] == '+') sign = 1 - 2*(str[i++] =='-');
      while(str[i] >= '0' && str[i] <='9'){
         if(base > INT_MAX/10 || base == INT_MAX/10 && str[i]- '0' > INT_MAX %10){
            if(sign == 1)return INT_MAX;
               return INT_MIN;
            }
            base = (base * 10) + (str[i++] - '0');
         }
         return base * sign;
   }
};
main(){
   Solution ob;
   cout << ob.myAtoi("-45")<<endl;
   cout << ob.myAtoi(" 56")<<endl;
   cout << ob.myAtoi("100")<<endl;
}

ইনপুট

"-45"
" 56"
"100"

আউটপুট

-45
56
100

  1. C++ এ একটি স্ট্রিং টোকেনাইজ করা

  2. C++ এ সংখ্যা স্ট্রিংকে পূর্ণসংখ্যাতে রূপান্তর করুন

  3. C++ এ একটি পূর্ণসংখ্যাকে একটি হেক্স স্ট্রিং-এ রূপান্তর করুন

  4. C++ এ একটি স্ট্রিংকে টোকেনাইজ করবেন?