7.30打卡

发布时间 2023-07-30 22:30:12作者: 灬倾夏

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

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

bool If(char op) //判断op是否为符号
{
if (op == '0')
return false;
if (op >= 'a' && op <= 'z')
return false;
if (op >= 'A' && op <= 'Z')
return false;
if (op >= '0' && op <= '9')
return false;
return true;
}

string replace(string str, string ch, string op)
{
for (int i = 0;; i++)
{
int l = str.find(ch, i), r = l + ch.size() - 1;
if (l == -1)
break;
if (l == 0 && (str[r + 1] == ' ' || If(str[r + 1]))) //位于最前面
{
str.replace(l, r - l + 1, op);
}
else if (r == str.size() - 1 && (str[l - 1] == ' ' || If(str[l - 1]))) //位于最后
{
str.replace(l, r - l + 1, op);
}
else if ((str[r + 1] == ' ' || If(str[r + 1])) && (str[l - 1] == ' ' || If(str[l - 1]))) //位于中间
{
str.replace(l, r - l + 1, op);
}
}
return str;
}

int main()
{
int n;
cin >> n;
getchar();
while (n--)
{
string str;
getline(cin, str);
cout << str << endl;

for (int i = 0; i < str.size(); i++)
{
if (str[i] == ' ')
{
int j = i;
while (j + 1 < str.size() && str[j + 1] == ' ')
j++;
str.erase(i, j - i);
i = j;
}
}
if (str.size() != 0 && str[0] == ' ')
str.erase(0, 1);
if (str.size() != 0 && str[str.size() - 1] == ' ')
str.erase(str.size() - 1, 1);
for (int i = 1; i < str.size(); i++)
{
if (If(str[i]) && str[i - 1] == ' ')
{
str.erase(i - 1, 1);
i--;
}
}

for (int i = 0; i < str.size(); i++)
{
if (str[i] >= 'A' && str[i] <= 'Z' && str[i] != 'I')
str[i] += 'a' - 'A';
}

str = replace(str, "can you", "A can");
str = replace(str, "could you", "A could");
str = replace(str, "I", "you");
str = replace(str, "me", "you");

for (int i = 0; i < str.size(); i++)
{
if (str[i] == '?')
str[i] = '!';
if (str[i] == 'A')
str[i] = 'I';
}
cout << "AI: " << str << endl;
}
return 0;
}