s1-数组-5

103 阅读1分钟

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

比较有退格的字符串具体解释

#1.上具体代码

 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);
 ​
     }
 };

#2.分析核心代码

  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);
 ​
     }

我们来看这段核心的代码,我们不难看出他的思路

我们画图分析

image-20220611190400064

image-20220611193713056

image-20220611193759859

s.substr(0,slow);前闭后开所以最终结果为空,之后的也可以这样理解

\