What Are You Talking About HDU1075[通俗易懂]

What Are You Talking About HDU1075[通俗易懂]一开始我也想用map但是处理不好其他字符。。看了题解多多学习!很巧妙就是粗暴的一个字符一个字符的来分为小写字母和非小写字母两个部分一但单词结束的时候就开始判断。#include<

大家好,又见面了,我是你们的朋友全栈君。

一开始我也想用map  但是处理不好其他字符。。

看了题解   多多学习! 很巧妙  就是粗暴的一个字符一个字符的来 分为小写字母和非小写字母两个部分  一但单词结束的时候就开始判断。

What Are You Talking About HDU1075[通俗易懂]
What Are You Talking About HDU1075[通俗易懂]

#include<bits/stdc++.h>
using namespace std;

int main()
{
    string a,b;
    map<string ,string >ma;
    cin>>a;
    while(cin>>a&&a!="END")
    {
        cin>>b;ma[b]=a;

    }
    cin>>a;
    char s[3500];getchar();
    while(gets(s))
    {
        if(!strcmp(s,"END"))break;

        int n=strlen(s);
        a="";
        for(int i=0;i<n;i++)
        {
         if(islower(s[i]))a+=s[i];
         else
         {
             if(ma.find(a)!=ma.end())
                cout<<ma[a];

             else
                 cout<<a;

             cout<<s[i];
             a="";


         }


        }
        cout<<endl;


    }




}

View Code

 

字典树写法

注意malloc   和初始化  字符串赋值用strcpy  不申请内存根本无法使用

因为 gets 和getchar 的问题检查了半小时  注意!!!

gets会吸收\n给忘记了。。。。

有关字典树的指针写法规范一下

What Are You Talking About HDU1075[通俗易懂]
What Are You Talking About HDU1075[通俗易懂]

#include <iostream>
#include <cstdio>
#include <cstring>
#include<malloc.h>
using namespace std;

struct node
{
    char *val;
    node *next[26];
    int flag;
    node()
    {
        for(int i=0;i<26;i++)
        {
            next[i]=NULL;

        }
        flag=0;
    }
};
node *p,*root=new node();

void change(char *s,char *v)
{
    p=root;
    for(int i=0;s[i]!='\0';i++)
    {
        int ch=s[i]-'a';
        if(p->next[ch]==NULL)
            p->next[ch]=new node();
        p=p->next[ch];

    }
    p->flag=1;
    p->val=(char*)malloc((strlen(v)+1)*sizeof(char));
    strcpy(p->val,v);

}

void find1(char *s)
{
    p=root;
    for(int i=0;s[i]!='\0';i++)
    {
        int ch=s[i]-'a';
        if(p->next[ch]==NULL)
        {
            printf("%s",s);return;
        }
        p=p->next[ch];
    }
   if(p->flag)printf("%s",p->val);
   else   printf("%s",s);

}

int main()
{
     char a[3010],b[3010];
     gets(a);
     while(scanf("%s",a)==1)
     {
         if(!strcmp(a,"END"))break;
         scanf("%s",b);
         change(b,a);

     }
    
     getchar();
     gets(a);
     char s[3010];
     while(gets(a))
     {
         if(!strcmp(a,"END"))break;
         int k=0;
         for(int i=0;i<strlen(a);i++)
         {
             if(islower(a[i]))s[k++]=a[i];
             else
             {
                 s[k]='\0';
                 find1(s);
                 printf("%c",a[i]);
                 k=0;
             }
         }

         printf("\n");
     }

return 0;
}

View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154431.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 卸载奇安信天擎,流氓软件怎么卸载_奇安信和360天擎

    卸载奇安信天擎,流氓软件怎么卸载_奇安信和360天擎奇安信天擎,很多朋友应该都不陌生,现在很多公司都要求每个员工的电脑上必须安装奇安信天擎这个软件,尤其是稍微大一点的公司,数据需要保密或容易被攻击的公司,奇安信可以有效的防御这些攻击。看到这是不是有朋友在想这不是一个很好的防御软件吗,为什么说是流氓软件呢?这个软件之所以叫它流氓软件,是因为这个软件一旦安装,既无法退出也无法卸载,有些朋友现在会想,这个软件就放那放着就好了啊,反正是防御的软件,我只能说你还没有了解奇安信的缺点。奇安信与一切杀毒软件冲突,公司要求安装奇安信,你就要把电脑之前的杀毒软件卸载,这

  • littlevgl移植_嵌入式ubuntu系统

    littlevgl移植_嵌入式ubuntu系统总述Littlevgl相比较于安卓、QT,占用资源少、使用简单,所以在linux系统下使用Littlevgl优势也比较明显。移植准备工作源码:lvgl:https://github.com/littlevgl/lvgl驱动:lv_drivers:https://github.com/littlevgl/lv_drivers例子:lv_examples:https://github.com/littlevgl/lv_examples下载慢可以将上面链接先导入到码云上再下载。配置工作源码

  • mysql 多表查询和更新_MySQL update select 多表关联查询更新

    mysql 多表查询和更新_MySQL update select 多表关联查询更新在遇到需要update设置的参数来自从其他表select出的结果时,需要把update和select结合使用,不同数据库支持的形式不一样,在mysql中如下:updateAinnerjoin(selectid,namefromB)conA.id=c.idsetA.name=c.name;根据AB两个表的id相同为条件,把A表的name修改为B的sql语句就如上所示参考…

  • vue和jQuery一起使用「建议收藏」

    vue和jQuery一起使用「建议收藏」vue使用了虚拟DOM,它的功能就是不需要开发者直接做dom操作,所以不建议使用vue同时还使用jQuery。然后说正题,当vue组件被创建时,它会把组件渲染到页面中,而jQuery通过绑定DOM才能进行操作jQuery代码在Mounted周期内进行,此时vue已经渲染完毕,jQuery才可以找到对应的DOM如果需要JQuery更新DOM,则在Mounted周期内不被允许,需要通过…

    2022年10月15日
  • python decode函数的用法_decode函数的用法

    python decode函数的用法_decode函数的用法DECODE函数是ORACLEPL/SQL是功能强大的函数之一,目前还只有ORACLE公司的SQL提供了此函数,其他数据库厂商的SQL实现还没有此功能。DECODE有什么用途呢?先构造一个例子,假设我们想给智星职员加工资,其标准是:工资在8000元以下的将加20%;工资在8000元以上的加15%,通常的做法是,先选出记录中的工资字段值?selectsalaryintovar-salar…

  • HTML5移动端开发的常用触摸事件

    HTML5移动端开发的常用触摸事件HTML5移动端开发的常用触摸事件

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号