সমাধান # 1
যেহেতু মূল প্রশ্নটি কেবল একটি সরল সমাধান চায় (এবং দ্রুত নয়), তাই এখানে একটি লাইন সমাধান রয়েছে:
public boolean contains(int[] array, int key) {
return Arrays.toString(array).matches(".*[\\[ ]" + key + "[\\],].*");
}
ব্যাখ্যা:Arrays.toString()
রাজ্যের জাভাদোক ফলাফল বর্গাকার বন্ধনীতে আবদ্ধ এবং সংলগ্ন উপাদানগুলি অক্ষর দ্বারা পৃথক করা হয় "," (একটি স্থানের পরে কমা)। সুতরাং আমরা এই উপর নির্ভর করতে পারেন। প্রথমে আমরা array
একটি স্ট্রিংয়ে রূপান্তর করি এবং তারপরে আমরা পরীক্ষা করি যে key
এই স্ট্রিংটিতে রয়েছে কিনা check অবশ্যই আমরা "সাব-নাম্বারগুলি" গ্রহণ করতে পারি না (যেমন "1234" "23" রয়েছে), তাই আমাদের এমন নিদর্শনগুলি সন্ধান করতে হবে যেখানে key
খোলার বন্ধনী বা একটি স্থানের আগে রয়েছে এবং তার পরে ক্লোজিং বন্ধনী বা কমা হবে।
দ্রষ্টব্য: ব্যবহৃত regexp প্যাটার্নটিও সঠিকভাবে নেতিবাচক সংখ্যাগুলি পরিচালনা করে (যার স্ট্রিং প্রতিনিধিত্ব একটি বিয়োগ চিহ্ন দিয়ে শুরু হয়)।
সমাধান # 2
এই সমাধানটি ইতিমধ্যে পোস্ট করা হয়েছে তবে এতে ভুল রয়েছে, তাই আমি সঠিক সমাধানটি পোস্ট করছি:
public boolean contains(int[] array, int key) {
Arrays.sort(array);
return Arrays.binarySearch(array, key) >= 0;
}
এছাড়াও এই সমাধানটির একটি পার্শ্ব প্রতিক্রিয়া রয়েছে: এটি array
(এটির প্রকারের) পরিবর্তন করে ।