समस्या
भाषा मॉडल कच्चे टेक्स्ट पर नहीं, टोकन पर काम करते हैं। एक सरल टोकनाइज़र टेक्स्ट को छोटे अक्षरों में बदलता है और अक्षर a-z तथा अंक 0-9 के हर क्रम को एक शब्द मानता है; बाकी सब कुछ (स्पेस, विराम चिह्न, अन्य अक्षर) शब्दों को अलग करता है।
शब्दावली बनाएँ: अलग-अलग शब्द, आवृत्ति के अनुसार क्रमबद्ध (सबसे अधिक पहले), बराबरी होने पर वर्णानुक्रम में। इस सूची में किसी शब्द की स्थिति उसकी टोकन ID है।
build_vocabulary(text) लागू करें।
इनपुट
text: कोई भी टेक्स्ट।
आउटपुट
शब्दावली को शब्दों की सूची के रूप में लौटाएँ। अगर टेक्स्ट में कोई शब्द नहीं है, तो खाली सूची लौटाएँ।
सीमाएँ
0 ≤ text की लंबाई ≤ 100,000
उदाहरण
इनपुट:
text = "The cat sat on the mat. The end!"
अपेक्षित आउटपुट:
expected = ["the", "cat", "end", "mat", "on", "sat"]
इनपुट:
std::string text = "The cat sat on the mat. The end!";
अपेक्षित आउटपुट:
std::vector<std::string> expected = {"the", "cat", "end", "mat", "on", "sat"};
इनपुट:
string text = "The cat sat on the mat. The end!";
अपेक्षित आउटपुट:
string[] expected = new string[] {"the", "cat", "end", "mat", "on", "sat"};
व्याख्या
छोटे अक्षरों में शब्द हैं the, cat, sat, on, the, mat, the, end। "the" 3 बार आता है; बाकी एक-एक बार आते हैं और वर्णानुक्रम में रखे जाते हैं: ["the", "cat", "end", "mat", "on", "sat"]।
इनपुट:
text = "AI, ai and A.I. (2024)"
अपेक्षित आउटपुट:
expected = ["ai", "2024", "a", "and", "i"]
इनपुट:
std::string text = "AI, ai and A.I. (2024)";
अपेक्षित आउटपुट:
std::vector<std::string> expected = {"ai", "2024", "a", "and", "i"};
इनपुट:
string text = "AI, ai and A.I. (2024)";
अपेक्षित आउटपुट:
string[] expected = new string[] {"ai", "2024", "a", "and", "i"};
व्याख्या
शब्द: ai, ai, and, a, i, 2024। "ai" दो बार आता है; बाकी एक-एक बार, वर्णानुक्रम में, अंक अक्षरों से पहले: ["ai", "2024", "a", "and", "i"]।
संदर्भ
यह चुनौती CodeUtility के लिए अनुकूलित की गई है। ऊपर दिए गए स्टेटमेंट और सीमाओं का पालन करें।