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

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

题目链接 团体程序设计天梯赛第64题
做这个题时一直有个测试点(1号测试点,即第二个测试点) 过不了,看了一些其他人的代码和解题思路也找不出问题来,最后再回来看了看题目,原来是自己一直理解错了,对字符串的修改一定都要在原文的基础上改。我做的时候错误在于把”I“、”me"改成“you"之后再对修改后的句子中的”can you"、“could you"改成"I can"和“I could”,这样的话万一原文中有"can I"的话就出问题了,按我的做法结果会是"I can",但正确的应该是“can you"。
我最后的AC代码如下,

#include 
#include
#include
#include
using namespace std;
string change(string result,string c1,string c2);//将result 中的独立的c1换成c2
 
void handle(string s);//处理并输出 
int main() 
{
    int n;
    string s;
    cin>>n;
    cin.ignore();
    while(n--)
    {
     getline(cin,s);
     handle(s);
 }
 return 0;
}
void handle(string s)
{
 cout<=0)
 {
  if(m+c1.length()==result.length())
  {
   if(m==0)
    {
       result.erase(m,c1.length());
            result.insert(m,c2);
             break;
    }
    else if(!(isalnum(result[m-1])))
    {
        result.erase(m,c1.length());
             result.insert(m,c2);
             break;
    }
  }
  else
  {
    //m=0只需要检查单词后面是不是字符或数字 来判断是否独立 
     if(m==0&&!(isalnum(result[m+c1.length()]))) 
    { 
       result.erase(m,c1.length());
       result.insert(m,c2);
       flag=1;
    }
    //m!=0两端都要判断 
  else if(m!=0&&!(isalnum(result[m-1])||isalnum(result[m+c1.length()])))
   {
    result.erase(m,c1.length());
      result.insert(m,c2);
      flag=1;
   }
     if(flag)
       m=result.find(c1,m+c2.length());
     else
       m=result.find(c1,m+c1.length());
  }
    }
    return result;
}

你可能感兴趣的:(pta,估值一亿的核心代码,c++)