Rust का एंट्री API किसी मैप की एक एंट्री को देखने का तरीका देता है। यह मैप HashMap हो या BTreeMap, कोई भी हो सकता है। एंट्री भरी हो सकती है या खाली, और API में ऐसे मेथड हैं जिनसे एंट्री की सामग्री बदली जा सकती है।
इस अभ्यास में आप HashMap और उसके entry API मेथड की मदद से एक साधारण एल्गोरिदम समस्या हल करेंगे।
मान लीजिए आपके पास एक &[&str] है जो किसी पत्रिका के लेख के शब्दों को दर्शाता है, और एक &[&str] है जो उस नोट के शब्दों को दर्शाता है जो आप भेजना चाहते हैं। क्या आप पत्रिका से शब्द काटकर और उन्हें चिपकाकर अपना नोट बना सकते हैं?
ध्यान दें:
आप इस अधूरे फंक्शन सिग्नेचर से शुरू करेंगे:
pub fn can_construct_note(magazine: &[&str], note: &[&str]) -> bool {
todo!()
}
अब इस इनपुट को देखिए:
let magazine = "two times three is not four".split_whitespace().collect::<Vec<&str>>();
let note = "two times two is four".split_whitespace().collect::<Vec<&str>>();
assert!(!can_construct_note(&magazine, ¬e));
यह फंक्शन false लौटाता है, क्योंकि पत्रिका में "two" सिर्फ एक बार आया है, जबकि नोट में यह दो बार चाहिए।
अब यह इनपुट सफल होगा:
let magazine = "Astronomer Amy Mainzer spent hours chatting with Leonardo DiCaprio for Netflix's 'Don't Look Up'".split_whitespace().collect::<Vec<&str>>();
let note = "Amy Mainzer chatting with Leonardo DiCaprio"
.split_whitespace()
.collect::<Vec<&str>>();
assert!(can_construct_note(&magazine, ¬e));
यह फंक्शन true लौटाता है, क्योंकि पत्रिका में वे सारे शब्द मौजूद हैं जो नोट के लिए ज़रूरी हैं।