मैं पिछले 2 घंटों से गुगल रहा हूं, और मुझे फ़ंक्शंस समय और स्थान जटिलता में निर्मित PHP की एक सूची नहीं मिल रही है।PHP फ़ंक्शंस जटिलता में निर्मित है (isAnagramOfPalindrome फ़ंक्शन)
expected worst-case time complexity is O(N)
expected worst-case space complexity is O(1) (not counting the storage required for input arguments).
जहां एन इनपुट स्ट्रिंग लंबाई है: मैं निम्नलिखित अधिकतम स्वीकृत जटिलता के साथ हल करने के लिए isAnagramOfPalindrome समस्या है। यहां मेरा सबसे सरल समाधान है, लेकिन मुझे नहीं पता कि यह जटिलता सीमा के भीतर है या नहीं।
class Solution {
// Function to determine if the input string can make a palindrome by rearranging it
static public function isAnagramOfPalindrome($S) {
// here I am counting how many characters have odd number of occurrences
$odds = count(array_filter(count_chars($S, 1), function($var) {
return($var & 1);
}));
// If the string length is odd, then a palindrome would have 1 character with odd number occurrences
// If the string length is even, all characters should have even number of occurrences
return (int)($odds == (strlen($S) & 1));
}
}
echo Solution :: isAnagramOfPalindrome($_POST['input']);
किसी को भी इस तरह की जानकारी कहां मिल सकती है?
संपादित
मुझे पता चला array_filter
हे (एन) जटिलता है, और count
हे (1) जटिलता है। अब मुझे count_chars
पर जानकारी प्राप्त करने की आवश्यकता है, लेकिन भविष्य की porblems के लिए एक पूर्ण सूची बहुत सुविधाजनक होगी।
संपादित 2
सामान्य रूप में स्थान और समय जटिलता पर कुछ शोध करने के बाद, मुझे पता चला इस कोड हे (एन) समय जटिलता और हे (1) अंतरिक्ष जटिलता है कि क्योंकि:
count_chars
लूप एन बार (इनपुट स्ट्रिंग की पूरी लंबाई, इसे ओ (एन) की प्रारंभिक जटिलता देगा)। यह सीमित अधिकतम संख्या वाले फ़ील्ड (26 सटीक, विभिन्न वर्णों की संख्या) के साथ एक सरणी उत्पन्न कर रहा है, और फिर यह इस सरणी पर एक फ़िल्टर लागू कर रहा है, जिसका अर्थ है कि फ़िल्टर सबसे अधिक 26 गुना लूप करेगा। अनंतता की ओर इनपुट लंबाई को दबाते समय, यह पाश महत्वहीन होता है और इसे स्थिर के रूप में देखा जाता है। गणना इस जेनरेटेड निरंतर सरणी पर भी लागू होती है, और इसके अलावा, यह महत्वहीन है क्योंकि count
फ़ंक्शन जटिलता ओ (1) है। इसलिए, एल्गोरिदम की समय जटिलता ओ (एन) है।
यह अंतरिक्ष जटिलता के साथ समान है। अंतरिक्ष जटिलता की गणना करते समय, हम इनपुट की गणना नहीं करते हैं, केवल प्रक्रिया में उत्पन्न वस्तुओं। ये ऑब्जेक्ट्स 26-तत्व सरणी और गिनती चर हैं, और दोनों को स्थिरांक के रूप में माना जाता है क्योंकि उनके आकार में इस बिंदु पर वृद्धि नहीं हो सकती है, इससे कोई फर्क नहीं पड़ता कि इनपुट कितना बड़ा है। तो हम कह सकते हैं कि एल्गोरिदम में ओ (1) की एक स्पेस जटिलता है।
वैसे भी, यह सूची अभी भी मूल्यवान होगी इसलिए हमें PHP स्रोत कोड के अंदर देखने की आवश्यकता नहीं है। :)
शायद आप अटकलें है स्रोत कोड को देखने और इसे अपने लिए समझने के लिए। यहां एक प्रश्न के साथ एक प्रश्न है जो इस जानकारी को कुछ कार्यों के लिए देने का दावा करता है: http: // stackoverflow।कॉम/प्रश्न/2473989/सूची-के-बड़े-ओ-फॉर-php-functions – developerwjk
मैं उसमें, महान जानकारी में भाग गया, लेकिन केवल 'array_filter' के लिए,' गिनती 'और' count_chars' पर कुछ भी नहीं। – Skatch
तकनीकी रूप से, 26 से अधिक विभिन्न वर्ण हैं। जब तक आपकी समस्या केवल अंग्रेज़ी वर्णमाला से वर्णों की आपूर्ति करने की गारंटी नहीं दी जाती है, तो count_chars() के लिए आपकी सबसे खराब स्थिति स्थान जटिलता न्यूनतम होगी (एन, <यूनिकोड कोड बिंदुओं की संख्या, जो बहुत कुछ है)। इसके अलावा, खाते में ऊपरी/निचले मामले को लेना न भूलें ... –