首页 > 编程语言 >团体程序设计天梯赛 L1-064 估值一亿的AI核心代码 题解

团体程序设计天梯赛 L1-064 估值一亿的AI核心代码 题解

时间:2023-04-21 18:57:06浏览次数:53  
标签:064 AI 题解 pos len int && include string

思路

L1-064 估值一亿的AI核心代码

题意有一点不太清晰的,就是原文中的'I',无论是否是单独的,都不能变为小写。如果是单独的'I'再被转化为'you'。

这种模拟题就需要每个的分分清清楚楚的,不要都揉到一块儿,容易写错。具体还有些需要注意的在代码里注释着了。

代码

#include <iostream>
#include <algorithm>
#include <map>
#include <vector>
#include <string>
#include <cstring>

#define fi first
#define se second

using namespace std;
using ll = long long;
using pii = pair<int, int>;

const double eps = 1e-4;

// 把字符串s的第pos个位置开始,长len的子串,替换为s1
string replace_str(string &s, int pos, int len, string s1) {
    string t1 = s.substr(0, pos), t2 = s.substr(pos+len, (int)s.size()-(pos+len));
    return t1 + s1 + t2;
}

// 判断s[pos]是不是字母
bool check_is_alpha(string &s, int pos) {
    if(pos < 0 || pos >= (int)s.size()) return false;
    char c = s[pos];
    if((c>='a' && c<='z') || (c>='A' && c<='Z')) return true;
    return false;
}

void solve() {
    string s;
    getline(cin, s);
    cout << s << endl;
    
    // 删除空格
    while(s.back() == ' ') s.pop_back();    // 删除行尾空格
    for(int i=0; i<(int)s.size(); i++) {    // 删除超过1个的空格 and 行首空格
        if(s[i] == ' ') {
            if(i == 0) {
                s.erase(0, 1);
                i--;
            }
            else {
                int j=i;
                while(j<(int)s.size() && s[j] == ' ') j++;
                s.erase(i, j-i-1);
            }
        }
    }
    for(int i=0; i<(int)s.size()-1; i++) {    // 删除符号前的空格
        if(s[i] == ' ' && (s[i + 1]<'0'|| s[i + 1]> '9') && (s[i + 1]<'A'|| s[i + 1]>'Z') && (s[i + 1]<'a' || s[i + 1]>'z')) {
            s.erase(i, 1);
            i--;
        }
    }

    // 所有大写字母都变成小写
    for(int i=0; i<(int)s.size(); i++) {
        if(s[i] >= 'A' && s[i] <= 'Z' && s[i] != 'I') s[i] += 'a' - 'A';
    }

    // 把原文中所有独立的 can you、could you 对应地换成 I can、I could
    // 把原文中所有独立的 I 和 me 换成 you;
    for(int i=0; i<(int)s.size(); i++) {
        // 如果s[i]前面不是字母
        if(!check_is_alpha(s, i-1)) {
            // 如果从i开始的子串最少长度为7 && 长度为7的子串的下一个字符不是字母 && 这个长度为7的子串是"can you"
            if(i+7 <= (int)s.size() && !check_is_alpha(s, i+7) && s.substr(i, 7) == "can you") 
                s = replace_str(s, i, 7, "I can");
            else if(i+9 <= (int)s.size() && !check_is_alpha(s, i+9) && s.substr(i, 9) == "could you")
                s = replace_str(s, i, 9, "I could");
            else if(i+1 <= (int)s.size() && !check_is_alpha(s, i+1) && s.substr(i, 1) == "I") 
                s = replace_str(s, i, 1, "you");
            else if(i+2 <= (int)s.size() && !check_is_alpha(s, i+2) && s.substr(i, 2) == "me") 
                s = replace_str(s, i, 2, "you");
        }
    }

    // 把?->!
    for(auto &c: s) if(c == '?') c = '!';

    s = "AI: " + s;
    cout << s << endl;
}

int main() {
    // multiple case
    int t; scanf("%d", &t);
    getchar();
    while(t--) {
        solve(); 
    }

    // single case
    // solve();

    return 0;
}

标签:064,AI,题解,pos,len,int,&&,include,string
From: https://www.cnblogs.com/1v7w/p/17341435.html

相关文章

  • AI大数据可视化EasyCVR视频融合平台的部署操作流程详解
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、检索回看、智能告警、平台级联、服务器集群、云台控制与语音对讲、......
  • 百度:baidu快捷方式
    https://www.baidu.com/ <html><head><metacharset=UTF-8"><title>百度一下,你就知道</title><scripttype="text/javascript"> window.location.href='https://www.baidu.com/';</script></head>......
  • 刘慈欣谈AI:人类若生活在科技的安乐窝里,终将会被“消灭”!
       “如果人类把社会运作的权力交给人工智能,选择生活在科技的安乐窝里,丧失活力和开拓性。那么,人类最终会被人工智能消灭。”面对突飞猛进的人工智能,中国科幻作家刘慈欣这样说道。   以ChatGPT为代表的生成式人工智能,凭借其惊艳的语言理解、生成、知识推理能力,在全世界掀起了......
  • Invalid prop: type check failed for prop "defaultExpandAll". Expected Boolean, g
    vue中使用element-ui报错如下,defaultExpandAll关键词页面也搜不到[Vuewarn]:Invalidprop:typecheckfailedforprop"defaultExpandAll".ExpectedBoolean,gotStringwithvalue"true".foundin---><ElTable>atpackages/table/src/table.vue......
  • Android Studio Gradle Download 慢/卡问题解决
    build.gradlebuildscript{repositories{//jcenter()//jcenter(){url'http://jcenter.bintray.com/'}maven{url'http://maven.aliyun.com/nexus/content/groups/public/'}maven{url"https://jitpac......
  • Installation failed with message Failed to establish session
    Androidstudio的setting里面build==》关闭instantrun用Androidstudio2.3调度程序时提示“InstallationfailedwithmessageFailedtoestablishsession”错误,需要在在开发者选项里关闭MIUI优化!开启手机开发者模式,在开发者选择中打开,USB安装(允许通过USB安装应用)......
  • AI大数据可视化EasyCVR视频融合平台的部署操作流程详解
    EasyCVR视频融合平台基于云边端一体化架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频直播、云端录像、云存储、检索回看、智能告警、平台级联、服务器集群、云台控制与语音对讲、......
  • 我的OpenAI库发布了!!!
    chatGPT正式发布已经有段时间了,这段时间我也深度体验了chatGPT的魅力。OpenAI除了提供网页版的chatGPT,还通过api的形式提供了很多其它服务,包括文字纠错、图片生成、音频转换等等。作为程序员,即使有现成的openai库,但还是免不了想自己造轮子,所以就有这个openai库。当前这个库刚刚......
  • 《花雕学AI》24:如何用万能Prompt公式与ChatGPT进行高效的对话测试
    引言你是否想要与人工智能进行有趣、有价值、有说服力的对话?你是否想要使用ChatGPT这个强大而灵活的对话生成器来创造出任何类型和主题的对话?如果是这样,那么你需要了解一个简单而强大的工具,就是万能Prompt公式。万能Prompt公式是一种用于生成任何类型和主题的对话的模板,它可以帮......
  • 对国产AI计算框架要有一定的包容力——记“mindspore”使用过程中的“不良反应”
      看mindspore的官方文档,居然有502错误,恶心到了:  打开Eager模式的链接,报错: ......