s1-数组-4

58 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情

s1-数组-4

力扣第844号问题

#1.上题目

image-20220610215151129

#2.分析

我们继续使用双指针法来进行操作

我们在这看下我们的核心函数,我们在这里还是使用的快慢指针的写法

首先我们先定义好快慢指针slowfast

  string Fin(string s)
     {
         int slow = 0;
         for (int fast = 0; fast < s.size(); fast++)
         {
             if (s[fast] == '#')
             {
                 
                 if (slow > 0) //这一步我们要注意当slow为0是就不能再减了
                     slow--;
             }
             else
                 s[slow++] = s[fast];
         }
         return s.substr(0,slow);
 ​
     }

#3.上代码

 class Solution
 {
 public:
     bool backspaceCompare(string s, string t)
     {
         //使用快慢指针来进行解决
         string s_fin = "";
         string t_fin = "";
         s_fin = Fin(s);
         t_fin = Fin(t);
        
         if (s_fin != t_fin)
         {
             return false;
         }
         return true;
     }
     //核心函数
     string Fin(string s)
     {
         int slow = 0;
         for (int fast = 0; fast < s.size(); fast++)
         {
             if (s[fast] == '#')
             {
                 
                 if (slow > 0)
                     slow--;
             }
             else
                 s[slow++] = s[fast];
         }
         return s.substr(0,slow);
 ​
     }
 };

\