Verilmiş bir Simli Cinsini dəyişdirin

Çətinlik səviyyəsi Asan
Tez-tez soruşulur Çiy kərpic Məlumat dəsti
SimBaxılıb 165

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.

Translate »