Mündəricat
Problem bəyanat
"Müəyyən bir simli cinsini dəyişdirin" problemində a sim "S". Giriş sətirindəki bütün cinsə aid sözləri dəyişdirəcək bir proqram yazın.
Giriş Formatı
“S” boşluqlu bir cümlə və ya simli olan ilk və yalnız bir sətir.
Çıxış formatı
Giriş sətirindəki / cümləsindəki bütün cinsiyyətə aid sözləri dəyişdirdikdən sonra son yenilənmiş cümləni çap edin.
Məhdudiyyətlər
- 1 <= | s | <= 10 ^ 6
- s [i] kiçik bir İngilis əlifbası və ya boşluq olmalıdır ”“.
misal
He is my son
She is my daughter
Alqoritm
1. Xəritələrdə bütün qadın sözlərini kişi sözləri ilə əks etdirən m1 hash xəritəsi yaradın.
2. Xəritələrdə bütün kişi sözlərini qadın sözlərindən ibarət olan başqa bir hash xəritəsi m2 yaradın.
3. Hər bir söz üçün ipdən keçin:
- Sözün cinsə xas bir söz olub olmadığını yoxlayın, cinsə xas bir söz olduğunu yoxlayın, sözü eşlənmiş sözlə əvəzləyin (qarşı söz)
4. Yeni cümləni çap edin.
Həyata keçirilməsi
Müəyyən bir Simli Cinsini Dəyişdirmək üçün C ++ Proqramı
#include <bits/stdc++.h> using namespace std; int main() { unordered_map<string,string> m1; m1["batman"]="batwoman"; m1["boy"]="girl"; m1["boyfriend"]="girlfriend"; m1["father"]="mother"; m1["husband"]="wife"; m1["he"]="she"; m1["his"]="her"; m1["male"]="female"; m1["man"]="woman"; m1["Mr"]="Ms"; m1["sir"]="madam"; m1["son"]="daughter"; m1["uncle"]="aunt"; unordered_map<string,string> m2; for(auto u: m1) { m2[u.second]=u.first; } string s; getline(cin, s); string temp=""; int n=s.length(); for(int i=0;i<n;i++) { if(s[i]!=' ') { temp+=s[i]; } else { if(m1[temp].size()>0) { cout<<m1[temp]<<" "; } else if(m2[temp].size()>0) { cout<<m2[temp]<<" "; } else { cout<<temp<<" "; } temp=""; } } if(m1[temp].size()>0) { cout<<m1[temp]<<" "; } else if(m2[temp].size()>0) { cout<<m2[temp]<<" "; } else { cout<<temp<<" "; } temp=""; return 0; }
Verilmiş bir Simli Cinsini Dəyişdirmək üçün Java Proqramı
import java.util.HashMap; import java.util.Map; import java.util.Scanner; class sum { public static void main(String[] args) { Scanner sr = new Scanner(System.in); String s = sr.nextLine(); int n = s.length(); Map<String, String> m1 = new HashMap<String, String>(); m1.put("batman", "batwoman"); m1.put("boy","girl"); m1.put("boyfriend","girlboyfriend"); m1.put("father","mother"); m1.put("husband","wife"); m1.put("he","she"); m1.put("his","her"); m1.put("male","female"); m1.put("man","woman"); m1.put("Mr","Ms"); m1.put("sir","madam"); m1.put("son","daughter"); m1.put("uncle","aunt"); Map<String, String> m2 = new HashMap<String, String>(); System.out.println(m1.keySet()); System.out.println(m1.values()); int sz=m1.size(); for(Map.Entry<String, String> entry : m1.entrySet()) { m2.put(entry.getKey(), entry.getValue()); } String temp=""; for(int i=0;i<n;i++) { if(s.charAt(i)!=' ') { temp+=s.charAt(i); } else { boolean flag1= m1.containsKey(temp); boolean flag2= m2.containsKey(temp); if(flag1) { System.out.print(m1.get(temp)+" "); } else if(flag2) { System.out.print(m2.get(temp)+" "); } else { System.out.print(temp+" "); } temp=""; } } boolean flag1= m1.containsKey(temp); boolean flag2= m2.containsKey(temp); if(flag1) { System.out.print(m1.get(temp)+" "); } else if(flag2) { System.out.print(m2.get(temp)+" "); } else { System.out.print(temp+" "); } } }
did you know that the female gender had a guardian
did you know that the male gender had a guardian
Mürəkkəblik təhlili
Zamanın mürəkkəbliyi
O (n) hara n verilən "s" sətrinin ölçüsüdür. Burada bir-bir cədvəlləri yoxlayırıq və cinsinə xas bir söz varsa, əks cinslə əvəzləyirik.
Kosmik Mürəkkəblik
O (n) çünki əvvəlcə bir sözü sətirdə saxlayırıq, sonra istədiyimiz əməliyyatı yerinə yetiririk.