কোড লাইন লাইন ভেঙে ফেলা যাক।
int চেকার = 0; আমরা একটি চেকার চালু করছি যা আমাদের সদৃশ মানগুলি খুঁজতে সহায়তা করবে।
int val = str.charAt (i) - 'ক'; আমরা স্ট্রিংয়ের 'I অবস্থান' তে অক্ষরের ASCII মান পাচ্ছি এবং এটিকে 'ক' এর ASCII মান দিয়ে বিয়োগ করছি। যেহেতু অনুমান করা হয় যে স্ট্রিংটি কেবলমাত্র কম অক্ষর, তাই অক্ষরের সংখ্যা 26 টি সীমাবদ্ধ He হেস, 'ভাল' এর মান সর্বদা> = 0 থাকবে।
যদি ((চেকার & (1 << ভাল))> 0) মিথ্যা ফিরে আসে;
পরীক্ষক | = (1 << ভাল);
এখন এটি জটিল অংশ। আমাদের "abcda" স্ট্রিং সহ একটি উদাহরণ বিবেচনা করতে দিন। এটি আদর্শভাবে মিথ্যা প্রত্যাবর্তন করা উচিত।
লুপ পুনরাবৃত্তির জন্য 1:
পরীক্ষক: 000000000000000000000000000000
ভাল: 97-97 = 0
1 << 0: 000000000000000000000000000001
পরীক্ষক এবং (1 << ভাল): 000000000000000000000000000000000000 নয়> 0
সুতরাং পরীক্ষক: 000000000000000000000000000001
লুপ পুনরাবৃত্তির জন্য 2:
পরীক্ষক: 000000000000000000000000000001
ভাল: 98-97 = 1
1 << 0: 00000000000000000000000000001010
পরীক্ষক এবং (1 << ভাল): 000000000000000000000000000000000000 নয়> 0
সুতরাং পরীক্ষক: 00000000000000000000000000001111
লুপ পুনরাবৃত্তির জন্য 3:
পরীক্ষক: 00000000000000000000000000001111
ভাল: 99-97 = 0
1 << 0: 000000000000000000000000000100
পরীক্ষক এবং (1 << ভাল): 000000000000000000000000000000000000 নয়> 0
সুতরাং পরীক্ষক: 0000000000000000000000000001111
লুপ পুনরাবৃত্তির জন্য 4:
পরীক্ষক: 0000000000000000000000000001111
ভাল: 100-97 = 0
1 << 0: 000000000000000000000000001000
পরীক্ষক এবং (1 << ভাল): 000000000000000000000000000000000000 নয়> 0
সুতরাং পরীক্ষক: 00000000000000000000000000001111
লুপ পুনরাবৃত্তির জন্য 5:
পরীক্ষক: 00000000000000000000000000111111
ভাল: 97-97 = 0
1 << 0: 000000000000000000000000000001
পরীক্ষক এবং (1 << ভাল): 00000000000000000000000000000000011> 0
সুতরাং মিথ্যা প্রত্যাবর্তন।