L1—064 估值一亿的AI核心代码
点我传送至指定题目
思路
AC代码
#include <iostream>
using namespace std;
bool is_alph(char c)
{
if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || c >= '0' && c <= '9')
return true;
return false;
}
bool is_can_or_could(string s,int i)
{
if(s.find("can you",i) > 0 || s.find("could you",i) > 0)
return true;
return false;
}
void trans(string s)
{
int len = s.length(),i = 0;
string str = "";
while(s[i] == ' ')
i++;
while(s[--len] == ' ')
;
len++;
printf("AI: ");
for(;i<len;i++)
{
if(s[i] == ' ')
{
while(s[i] == ' ')
i++;
if(is_alph(s[i]))
str += ' ';
}
if(s[i] >= 'A' && s[i] <= 'Z' && s[i] != 'I')
str += s[i] + 32;
else if(s[i] == '?')
str += '!';
else
str += s[i];
}
for(i=0;i<str.length();i++)
{
if(str[i] == 'I' && !is_alph(str[i-1]) && !is_alph(str[i+1]))
printf("you");
else if(str[i] == 'm' && str[i+1] == 'e' && !is_alph(str[i-1]) && !is_alph(str[i+2]))
printf("you"),i++;
else if(str[i] == 'c' && str.substr(i,7) == "can you" && !is_alph(str[i-1]) && !is_alph(str[i+7]))
printf("I can"),i+=6;
else if(str[i] == 'c' && str.substr(i,9) == "could you" && !is_alph(str[i-1]) && !is_alph(str[i+9]))
printf("I could"),i+=8;
else
printf("%c",str[i]);
}
puts("");
return ;
}
int main()
{
int n;
scanf("%d",&n);
getchar();
string s;
while(n--)
{
getline(cin,s);
printf("%s\n",s.c_str());
trans(s);
}
return 0;
}