网站手机端怎么制作教程,网站建设工程属于科技档案吗,架设网站需要什么,佛山建网站定制文章目录 题目方法一#xff1a;单指针方法二#xff1a;双指针方法三#xff1a;栈 题目 方法一#xff1a;单指针
首先每次进入循环处理之前需要对第一个字符进行判断#xff0c;若是退格符#xff0c;直接删掉#xff0c;结束此次循环fast从0开始#xff0c;如果fa… 文章目录 题目方法一单指针方法二双指针方法三栈 题目 方法一单指针
首先每次进入循环处理之前需要对第一个字符进行判断若是退格符直接删掉结束此次循环fast从0开始如果fast指向的字符不为# fast往后移动如果fast指向的字符为 # 则删除 fast前面一个字符 和fast指向的字符 然后重置fast指针到起始点继续循环直到没有#号符为止在判断处理完的两个字符串是否相等
// 方法一 : 单指针public boolean backspaceCompare(String s, String t) {return letter(s).equals(letter(t));}public String letter(String s){StringBuffer str new StringBuffer(s);int fast 0;while(fast str.length()){if(str.charAt(0) #) { // 若字符首个字符为 ‘#’直接删除 结束本次循环str str.delete(0,1);continue;} if(str.charAt(fast) ! #) fast;//如果fast指向的字符不为# fast往后移动else{//如果fast指向的字符为 # 则删除 fast前面一个字符 和fast字符 然后重置fast指针到起始点str str.delete(fast-1,fast1);//注意 这里删除区间元素 是 左闭右开的 要删除 left right 区间的元素 delete(left,right1)fast 0;//重置fast}}return str.toString();//返回处理好的字符串}方法二双指针
定义一个尾部指针和#号计数器如果尾部指针遇到# 删除#号同时 让#号计数器1如果遇到字符根据#计数器的数量来删除字符每遇到一个字符如果#号计数器大于0则直接删除字符。若遇到字符时#号计数器0,说明之前没有退格符则尾部指针直接往前移动直到尾部指针0,代表处理完成
// 方法二 : 双指针 本质还是单指针 指针从字符串尾部向前移动一旦遇到# 记录退格的数量 遇到字符就根据退格数量删除字符直到指针0public boolean backspaceCompare(String s, String t) {return letter(s).equals(letter(t));}public String letter(String s){StringBuffer str new StringBuffer(s);int end str.length()-1;//将指针指向末尾int temp 0;//记录#号的数量while(end 0){if(str.charAt(end)#) {//遇到#号 temp1同时删除#号temp;str.delete(end,end1);}else{//遇到非#号 判断#数量来删除尾部字符if(temp 0){str.delete(end,end1);temp--;//更新#号数量}}end--;//尾部指针向前移动}return str.toString();//返回处理好的字符串}方法三栈