uva10391 Compound Words (substr用法)

本文介绍了一种算法,用于从给定的字典中找出复合词。复合词是指能够被拆分成两个独立词汇的单词,且这两个独立词汇也存在于同一字典中。通过使用C++实现,并借助标准模板库(map)进行高效存储与查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:给你一组字符串构成一个字典,问字典中是否存在复合词,复合词的定义为这个词在字典中,并且油这个词分割成的两个词也在字典中。

用map存字典,遍历整个字典,遍历到其中一个字符串的时候,用substr分割这个字符串来判断分割后的两个词是否在字典中。


#include<bits/stdc++.h>

using namespace std;

int main()
{
    map<string,int>mp;
    string s[120010];
    int i=0;
    while(cin>>s[i])
        mp[s[i++]]=1;
    int n=i;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<s[i].size()-1;j++)
        {
            string ss=s[i].substr(0,j+1);
            string s1=s[i].substr(j+1);
            if(mp[ss]&&mp[s1])
            {
                cout<<s[i]<<endl;
                break;
            }
        }
    }
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值