আপনি স্ট্রিং রিভার্সাল কি জন্য ব্যবহার করবেন? [বন্ধ]


15

পিএইচপি এটি strrev() , এটি রেলগুলিতে .reverse, তবে বেশিরভাগ ভাষায় কোনও স্ট্রিং বিপরীত কার্য থাকে না। কারও কারও কাছে অ্যারে রিভার্স ফাংশন রয়েছে যা অক্ষরে ব্যবহৃত হতে পারে। আমি ভাবছিলাম এটি অবশ্যই একটি বড় তদারকি হবে তবে আমার কাছে তা ঘটেছিল, আপনি আসলে স্ট্রিং রিভার্সটি কী ব্যবহার করবেন ???

আমি কেবল একবারই ভাবতে পারি যে এটি দেখেছি "হ্যালো ওয়ার্ল্ড!" চালু করার জন্য এটি ডেমো এবং পাঠের মধ্যে রয়েছে! "! dlroW leleH" এ।

আমার প্রশ্ন; কোনও স্ট্রিংকে উল্টানোর জন্য কোনও ব্যবহার আছে বা এটি সম্পূর্ণ অর্থহীন?

অভিযোজ্য বস্তু

আমার প্রত্যাশা ছিল এমন আরও অনেক উত্তর রয়েছে এবং সেগুলি পুরোপুরি একাডেমিক ছিল না। আমি এমন অর্থ উপস্থাপন করতাম যে কেউ বৈধ উদাহরণ দিয়ে আসতে পারে না। আমিও ভাবিনি যে আমি নতুন কিছু শিখব তবে মার্ক ক্যানলাসের রেজেক্স পরামর্শটি কেবল উজ্জ্বল এবং আমি এটি প্রমাণ করার সুযোগের অপেক্ষায় রয়েছি। সবাইকে ধন্যবাদ.


@ ক্লক ওয়ার্কজিক - আপনি যদি কোনও প্রার্থীকে তাদের পছন্দের ভাষায় স্ট্রিং বিপরীতমুখী করতে বলেন, আপনি যে বেসিক ফাংশনটি উল্লেখ করেছেন তাতে কয়জন আসে না বলে আপনি অবাক হয়ে যাবেন। তারপরে কতজন এটিকে বাস্তবায়নের জন্য লুপ নিয়ে আসতে পারে না।
justkt

@ আইনডক্ট - এটি হবার অপেক্ষায় থাকা সম্পূর্ণ অন্য একটি প্রশ্ন তবে এটি টপকোডারের পরিবর্তে একটি বিষয় হতে পারে।
ক্লক

6
একটি পাঠ্য বার্তা প্রেরণ করতে যা ড্রাইভিং করার সময় রিয়ারভিউ আয়নাতে পড়া যেতে পারে, তাই পুলিশগুলি খেয়াল করবে না।
জেফো

@ অ্যাডজেক্ট - যদি এটি করার জন্য আমাকে পুনরাবৃত্ত লুপটি লিখতে হত তবে আমি মাঝেরটি পৌঁছানো অবধি চরগুলি অদলবদল করতে শুরু করব। তবে কীভাবে আপনি দুটি মান পরিবর্তন করবেন? এখানে আমাকে দেওয়া সর্বকালের সেরা উত্তরটি এখানে রয়েছে:a ^= b; b ^= a; a ^= b;
ক্লক

1
আমি স্ট্রিংগুলি বিপরীত করার জন্য স্ট্রিং রিভার্সাল ব্যবহার করি;)
Muad'Dib

উত্তর:


19

Sexegers

কখনও কখনও, নিয়মিত ভাব প্রকাশের সাথে জড়িত সমস্যাগুলি ইনপুট স্ট্রিংটি বিপরীত করে এবং সমস্যাটিকে অন্যভাবে মোকাবেলা করে আরও সহজেই লেখা যায়।

যে লোকটি আমাকে পার্ল শিখিয়েছিল তার প্রযুক্তিগত সৌজন্যে।

পার্লমোনাক্সে সেক্সেগার


ধন্যবাদ. কোনও কিছুর শেষ সন্ধান করার জন্য খুব সহজ কৌশল। যথাযথভাবে উল্লেখ.
ক্লকওয়ার্কজেক

আমি বছরের পর বছর ধরে এটি করে আসছি। ইমেল ঠিকানা পার্সিংয়ে সহায়তা করে।
সাল

23

ঠিক আছে, এটি একটি জিভ-ইন-গাল উত্তর।

"পিছনে দিন" আমার একটি ইউনিক্স বাক্স ছিল এবং এটিতে ইংরেজী শব্দের একটি অর্ডার করা অভিধান ফাইল ছিল, যা বানান-পরীক্ষার জন্য ব্যবহৃত হয়েছিল।

অভিধানের সমস্ত শব্দকে বিপরীত করে, বাছাই করে এবং সেগুলি আবার বিপরীত করে আমি একটি নতুন ফাইল তৈরি করেছি। ফলাফলটি ডান থেকে বামে সাজানো শব্দের একটি তালিকা ছিল।

সুতরাং আপনি যদি এটি কোনও শব্দের জন্য অনুসন্ধান করেন তবে সেই শব্দের পাশে একই শব্দগুলির সমাপ্তি হবে। তাই ছোট্ট কবিতা তৈরি করা সহজ ছিল!

কোনটি ছড়াছড়ি দিয়ে দেখলে আপনি সত্যিই নিজেকে পরিতৃপ্ত করতে পারেন।


13

আমি c 10 বছর ধরে কোডার / বিকাশকারী / সিসাদমিন হয়েছি এবং আমি কখনও মনে করতে পারি না এবং বাস্তব জীবনের পরিস্থিতিতে স্ট্রিং রিভার্সালের প্রয়োজন ।

কেবলমাত্র তাত্ক্ষণিক ব্যবহারের ক্ষেত্রে আমি সংখ্যা বেজ রূপান্তরটি ভাবতে পারি: নিখরচায় হয়ে গেলে, পদ্ধতিটি একটি বিপরীত স্ট্রিং দেয়। তবে কিছুটা গণিতের সাহায্যে আপনি প্রয়োজনীয় পরিমাণের পরিমাণ গণনা করতে পারেন, তাই আপনি শেষ থেকে বাফারটি পূরণ করতে শুরু করতে পারেন।


1
স্ট্রিংটি বিপরীত করার চেয়ে অঙ্কের বিটটি আরও ব্যয়বহুল, সুতরাং আপনার প্ল্যাটফর্মে বেঞ্চমার্ক করার পরে (এআরএম, এমআইপিএস, x86) আপনি স্ট্রিং বিপরীত ব্যবহার করতে পারেন। হতে পারে.
ঝ্যান লিংস

আপনি শেষ থেকে বাফারটি পূরণ করতে পারেন এবং শেষ memmoveহয়ে গেলে শুরুতে একটি ব্যবহার করতে পারেন । প্রয়োজনীয় সংখ্যার সংখ্যা গণনা করার জন্য এটি লগ (এন) / লগ (বেস) গণনার চেয়ে সস্তা।
প্যাট্রিক Schlüter

12
public bool IsPalindrome(string toCheck)
{
    return toCheck == toCheck.Reverse();
}

1
হ্যাঁ - আমাদের আসলে একটি সাক্ষাত্কার-স্ক্রিনিং রয়েছে যেখানে প্রার্থীরা একটি প্যালিনড্রোম চেকার লেখেন এবং বেশিরভাগ এটি করেন। যাইহোক, প্রার্থীরা বিপরীত প্রান্তে চরিত্রটির সাথে তুলনা 0করতে n/2এবং তুলনা করার সময় এটি আমার পক্ষে ভাল ।
নিকোল

@ রেনেসিস: আপনি এটিও করতে পারেন: while ( (*p == *q) && (p <= q) {p++; q--} return p > q;সি এবং অন্যান্য পয়েন্টার ভাষায় স্ট্রিংয়ের মূল সূচনা, কিউ স্ট্রিংয়ের শেষে শুরু করুন ।
মাইকেল কে

4
আমি মনে করি একটি "প্যালিনড্রোম চেকার" উল্লেখযোগ্যভাবে কার্যকর না হলেও, "প্যালিনড্রোম চেকার লিখুন" এর কমপক্ষে একটি উদ্দেশ্য রয়েছে।
ক্লক

2
একটি সাক্ষাত্কারে, তারা আমাকে একটি স্ট্রিং বিপরীত করতে বলেছিল এবং তারা বলেছিল "এটি কোনও স্ট্রিং মনে রাখবেন না। বিপরীত ()। তাই আমি কেবল স্ট্রিংটিকে একটি চরিত্রের অ্যারেতে রূপান্তর করেছি এবং অ্যারেটি করেছি। বিপরীত
জ্যাক

এটি একটি দুর্দান্ত কুলুঙ্গি ব্যবহার এবং আপনি সাধারণত ভাষা / লাইব্রেরি অন্তর্ভুক্ত মূল্যবান বলে মনে করবেন না!
ড্যান ডিপ্লো

8

সাক্ষাতকার!

স্ট্রিংকে বিপরীত করা (জায়গায় থাকা বা না) বেসিক প্রোগ্রামিং জ্ঞানের জন্য একটি খুব সাধারণ সাক্ষাত্কার প্রশ্ন। ফাংশনগুলিতে এগুলি নির্মিত ভাষার অভাবের জন্য ইন্টারভিউ নেওয়া কঠিন। প্রার্থীকে আসলে কিছু জানতে হবে। 1


1: এটি একটি জিভ ইন গাল উত্তর।


6

আমি এমন পরিস্থিতি দেখেছি যেখানে একটি ডেস্কটপ অ্যাপ্লিকেশন এম্বেড থাকা ডিভাইসের সাথে কথা বলছিল এবং বাইট-অর্ডার সমাপ্তি ক্রমাগত স্যুইচ করে চলেছিল এবং ডেটা স্ট্রিং হিসাবে স্থানান্তরিত হয়েছিল। যদিও এটি আমার জন্য এটি।

আমি এই অ্যাপ্লিকেশনটির জন্য স্ট্রিং ব্যবহার করতে পারতাম না তবে এটি ঠিক ঠিক তেমনভাবে চলতে পারে .....


এই উত্তরের জন্য +1। এটি অন্তত একটি বাস্তব উদাহরণ যদিও আমিও এটি অন্য উপায়ে করতে পারতাম, সম্ভবত আদিম ধরণের পৃথকভাবে পছন্দ করে এমন পছন্দগুলি বেছে নিয়ে।
ক্লকওয়ার্কজেক

5
<span style="unicode-bidi: bidi-override; direction:rtl;">
    <?php echo strrev($emailaddress); ?>
</span>

কোনও ইমেল ঠিকানা অবলম্বন করার জন্য সেরা সমাধান নয়, আপনি যখন ক্লিপবোর্ডে এটি যুক্ত করেন তখনও এটি বিপরীত হয়। এবং, যদি এটি জনপ্রিয় হয়ে ওঠে, শীঘ্রই এটি ইমেল স্ক্র্যাপিং বটগুলি দ্বারা সনাক্ত করা হবে।

তবুও, এটি প্রস্তাবিত হয়েছে


1
এবং সর্বাধিক জনপ্রিয় অবলম্বনটি সেই পুরো নিবন্ধটিতে কেবল একটি বাক্য দেওয়া হয়েছিল ... একটি চিত্র হিসাবে এনকোডিং।
ক্লক

1
@ ক্লক ওয়ার্কিক, এটি একটি জনপ্রিয় হতে পারে তবে কার্যকর সমাধানগুলির মধ্যে সবচেয়ে খারাপ এটি আইএমএইচও - জেনারেট করা খুব সহজ নয়, এইচটিএমএলে এম্বেড নয় (গতি, চিত্রের স্টোরেজ, সার্ভারের লোড) স্থানের বাইরে দেখায়, স্টাইল করা যায় না সিএসএস এবং স্ট্রিং রিভার্সালের মতো একই দুর্বল ব্যবহারকারীর অভিজ্ঞতা, এটি মনে রাখার এবং এটি পুনরায় টাইপ করার। এবং সম্ভবত আরও সমস্যাগুলি আমি ভাবছি না।
নিকোল

কৌতূহলজনকভাবে যদিও, এটি এবং ডট ব্যবহার করে, একটি কাটার জন্য ডিকোড করা সবচেয়ে সহজ, ফসল কাটা রোধে প্রায় নিখুঁত কার্যকারিতা আছে বলে প্রমাণিত হয়। কখনও কখনও এটি সহজ রাখা খুব খারাপ ধারণা নয়।
জোয়েরি সেব্রেচটস

5

জেনেটিক তথ্যের জন্য ASCII সেরা এনকোডিং নয় (আপনি বেস টাইপগুলির ACGT 2 বিট হিসাবে প্যাক করতে পারেন)। এগুলি লম্বা লম্বরের অ্যারেতে প্যাক করুন এবং আপনি প্রতি শব্দে 32 জেনেটিক "চিঠি" পান। ডিএনএ ঘুরতে পারে, সুতরাং আপনি উভয় ফরোয়ার্ডের বিপরীতে ডিএনএর একটি অংশের পরীক্ষা পরীক্ষা ক্রমের বিপরীত অনুলিপিগুলি দেখতে পেয়েছেন। সুতরাং 2 বিট পরিমাণের একটি প্যাকযুক্ত স্ট্রিংটি বিপরীত করতে সক্ষম হওয়া বিভিন্ন ধরণের জিনগত বিশ্লেষণের জন্য খুব দরকারী।

গুপ্তচর সংস্থাগুলির একটি মানদণ্ডে আমার কাছে একটি আইটেম ছিল, আপনি কীভাবে দ্রুত বিটগুলি দীর্ঘ-দীর্ঘ (বিস্মৃতকরূপে একটি দীর্ঘ দীর্ঘ অ্যারে) বিপরীত করতে পারেন। একসাথে 2 বিট এক্সচেঞ্জের সুস্পষ্ট পদ্ধতিটি কম স্পষ্ট পদ্ধতিগুলির তুলনায় অনেক ধীর। এগুলি স্থান অ্যারে স্থানান্তরের জন্য কিছু ঝরঝরে অ্যালগরিদমের সাথে সম্পর্কিত।

টাঙ্গুরেনা: আপনি যে অপারেশনটির কথা উল্লেখ করেছেন তাকে জনসংখ্যা গণনা বলা হয়। বিট প্যাকড ডেটার জন্য অনুরূপ পছন্দসইগুলি শূন্যের গণনা অগ্রণী এবং পিছনে রয়েছে। বিট প্যাকড ডেটার সাহায্যে অনেকগুলি ঝরঝরে ঝরঝরে জিনিস রয়েছে one দীর্ঘতম স্থানে একক ক্রিয়াকলাপটি way৪ ওয়ে ডেটা সমান্তরাল, তাই আপনি কী করছেন তা যদি আপনি জানেন তবে আপনি নির্দিষ্ট ধরণের কম্পিউটারের জন্য অবিশ্বাস্য পারফরম্যান্স পেতে পারেন।


আকর্ষণীয় বিষয়, ঠিক কীভাবে আপনি কিছুটা ক্ষেত্র বিপরীত করবেন?
ক্লকওয়ার্কজেক

"ঠিক কীভাবে আপনি কিছুটা ক্ষেত্রের বিপরীতে যাবেন?"
ওমেগা সেন্টাউরি

2
একটি পদ্ধতি হ'ল টেবিল দেখার জন্য You সুতরাং আপনি এটি করতে পারেন indivdual বাইট। বেশ কয়েকটি বিট সরানোর উপায় রয়েছে এবং একবার ... কিছুটা চালাকতা এবং ট্রেড অফস (টেবিলের আকার বনাম সংখ্যক ক্রিয়াকলাপ ইত্যাদি) এবং আপনি এটি টিউন করার চেষ্টা করতে পারেন।
ওমেগা সেন্টাউরি

5

বিপরীত স্ট্রিংয়ের সাথে কাজ করা যে কোনও কিছুই সহজ is

স্ট্রিংগুলি বিপরীত হলে স্ট্রিং হিসাবে পূর্ণসংখ্যার সাথে কাজ করা অনেক সহজ। আমি বড় অঙ্কের সাথে গণিত করার জন্য কিছু লাইব্রেরি ফাংশন তৈরি করেছি এবং পাটিগণিত ফাংশনগুলি আরও সহজ করতে স্ট্রিং রিভার্সাল ব্যবহার করেছি।

মঞ্জুর, আমি এটি কেবলমাত্র প্রোজেক্ট ইউলারের উত্তর ক্র্যাঙ্কিংয়ের জন্য ব্যবহার করেছি, তবে তবুও, মূল অনুমানটি ধারণ করে।


+1 টি। সংখ্যার স্ট্রিং উপস্থাপনা ব্যবহার করার সময়, বিপরীত উপস্থাপনা খুব সহায়ক। এবং সাধারণত স্ট্যান্ডার্ড লাইব্রেরিটি সাধারণ ক্রমে সংখ্যাগুলি উপস্থাপন করে।
back2dos

3

বাম থেকে ডান পরিবর্তে ডান থেকে বামে (যেমন আরবি হিসাবে) অক্ষর ব্যবহার করা ভাষাগুলির জন্য কম দামের বহু-ভাষাগত সমর্থন। অবশ্যই আপনাকে উচ্চারণের অক্ষরগুলির জন্য সঠিক চরিত্রটি পরিবর্তন করতে হবে ...


2

আমি জানি না কারও কাছে প্যালিনড্রোম পরীক্ষা করার জন্য জ্বলন্ত প্রয়োজন রয়েছে ...

আমি এটি সম্পূর্ণরূপে অকেজো বলে মনে করি না, কারণ এমন পরিস্থিতিতেও থাকতে পারে যেখানে স্ট্রিংকে বিপরীত করতে সক্ষম হওয়া দরকার।


তার ফলো আপ প্রশ্নটি হবে, আপনার কখন থেকে আসল বিশ্বে একটি প্যালিনড্রোম চেক করা দরকার? আবার, আমি কেবল কখনও দেখেছি কাউকে অ্যালগরিদম পাঠগুলিতে যত্নশীল।
ক্লক

উদাহরণস্বরূপ এটির
অন্ধকার রাত

আমি মনে করি সম্ভবত অন্যান্য ব্যবহার আছে, তবে এটি ডোমেন নির্দিষ্ট। উদাহরণস্বরূপ যদি স্ট্রিং অনুসন্ধানগুলি সামনের দিকে অনুসন্ধানের জন্য অনুকূলিত হয় এবং আপনি শেষ ঘটনার জন্য একাধিক অনুসন্ধান করতে চেয়েছিলেন তবে আপনি প্রথমে এটি বিপরীত করতে চাইতে পারেন। এটি যদিও এটি একটি অপ্টিমাইজেশন হতে পারে এবং এটির জন্য যদি কোন প্রসেসযোগ্য কেস না থাকে তবে এটি করা উচিত নয়। আমি স্ট্রিংয়ের মানটির একটি হ্যাশ তৈরির জন্য একটি অ্যালগরিদম কল্পনা করতে পারি যা লেজের প্রান্তটি ব্যবহার করতে চেয়েছিল, সম্ভবত এটি বিপরীত হয়েছে, যদি এটির চেয়ে ভাল হ্যাশিং বৈশিষ্ট্য সরবরাহ করা হয়।
স্কট হুইটলক

2

প্রাকৃতিক ভাষা প্রক্রিয়াকরণ এবং বিশ্লেষণে কখনও কখনও শেষ থেকে শুরু পর্যন্ত স্ট্রিং সন্ধান করা সহজ। একটি স্ট্রিং রিভার্স ডিবাগিংয়ের জন্য, বা লুপটি লেখার বিকল্প উপায় হিসাবে (স্ট্রিংটি বিপরীত করুন এবং তারপরে সূচক 0 থেকে এন -1 পর্যন্ত লুপ) কার্যকর হবে।

এছাড়াও কিছু ভাষাগুলি ডান থেকে বামে লেখা থাকে, সুতরাং যদি আপনি এমন পরিবেশে থাকেন যা এলটিআর / আরটিএল ভাষা স্বীকৃতি দেয় না তবে একটি স্ট্রিং রিভারসার ব্যবহার করা যেতে পারে।

একটি স্ট্রিং (কিছু ভাষায়) অক্ষরের একটি অ্যারে, তবে এটি ঠিক তেমনি বেতন-চেক বা ইনভেন্টরি পরিবর্তনও হতে পারে। এগুলি অতিক্রম করে একটি লুপে আপনি কিছু গণনা করতে পারেন যা আপনি তাদের ক্রিয়াকলাপের আদেশটি নির্বিশেষে একই হওয়া উচিত। একটি পুরোপুরি ক্রমুল্যান্ট ইউনিট পরীক্ষা হ'ল তারা গণনাগুলি একইভাবে এগিয়ে যাচ্ছে বা পিছনে যাচ্ছে কিনা তা পরীক্ষা করে দেখুন। এটি সংযোজনের জন্য তুচ্ছভাবে সুস্পষ্ট হতে পারে, অন্য আরও অস্বচ্ছ ক্রিয়াকলাপের জন্য নাও হতে পারে।


1

সংকলকদের জন্য?

এটি মজাদার, তবে কোনও ভাষার বেশিরভাগ চিহ্নগুলি সাধারণ প্যাটার্ন দিয়ে শুরু হবে। আমি এখানে হাঙ্গেরিয়ান নোটেশন সম্পর্কে কথা বলছি না, তবে আপনি যদি নেমস্পেস / ক্লাস সম্পর্কে চিন্তা করেন, তবে অনেকগুলি প্রতীক আসলে একটি সাধারণ উপসর্গ ভাগ করে নেবে ।

myproject::SomeClass::GetFoo
myproject::SomeClass::GetBar

সমস্যাটি হল, বাইনারি অনুসন্ধান করার সময়, সাধারণ উপসর্গগুলি সবচেয়ে খারাপ জিনিস যা আপনি শেষ করতে পারেন, কারণ আপনি সেই উপসর্গগুলি বারবার তুলনা করে শেষ করবেন।

অন্যদিকে, আপনি যদি পিছনের স্ট্রিংগুলির দিকে একবার নজর পান তবে আপনি আরও অনেক এনট্রপি দেখতে পাবেন! এবং তারপরে হঠাৎ একটি বাইনারি অনুসন্ধান (একটি ট্রির উপরে) অনেক বেশি শক্তিশালী হয়ে ওঠে!

সর্বদা এটি আমার কাছে বগড হয়ে গেছে যে সিম ++ ম্যাংলেড নামগুলি (জিসিসি দ্বারা) সর্বশেষে নাম স্থানটিতে উল্টানো হয়নি :)


0

আমি সময়ে সময়ে অনুসন্ধানের জন্য ফোন নম্বর এবং নির্দিষ্ট স্ট্রিংগুলি ফ্লিপ করি


0

কেবলমাত্র যখনই স্ট্রিং বিপরীতটি ব্যবহার করা হচ্ছে তা মনে করতে পারছি এমন একটি ফাংশন যা আমি দেখেছি ফাইলের নামগুলি বিশ্লেষণ করার সময় এটি ব্যবহৃত হয়েছিল, তা নিশ্চিত করে '' '। এটি ফাইলের নামটিতে পাওয়া যায় এটি ছিল শেষ বিন্দু যা ফাইলের নামটি এক্সটেনশন থেকে পৃথক করে। অর্থাত্, কোনও ফাইলের নাম পার্সিং করা data.2010.12.08.dat, আপনি স্ট্রিংটি বিপরীত করতে চান, প্রথম বিন্দুটি খুঁজে পাবেন, মূল স্ট্রিংয়ের শেষে থেকে সেই অবস্থানটি বিয়োগ করুন এবং স্ট্রিংগুলি নেবেন। আমি এটি করার সর্বোত্তম উপায়টি বলছি না, তবে এটি কী করেছে তা জানায়। এটি পাওয়ারবিল্ডারের মধ্যে থাকতে পারে, যেখানে বিভিন্ন ধরণের অপ্রত্যাশিত সমস্যার জন্য এই ধরনের জঘন্য ব্যবহারগুলি সাধারণ ছিল।


0

স্ট্র্রেভ ব্যবহার করে আমি দেখেছি এমন একমাত্র আসল ওয়ার্লস অ্যাপ্লিকেশনটি ছিল ডাটাবেসে ব্যবহারকারীর পাসওয়ার্ডগুলি 'অপঠনযোগ্য' সংরক্ষণ করা ...

তবে আমি মনে করতে পারি যে স্ট্রিভ ব্যবহার করার জন্য সি তে একটি প্যাটার্ন রয়েছে, সম্ভবত আমি পরে এটি নিয়ে এসেছি।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.