笔试的时候题目要求没看清楚,然后导致想法都是错的,然后下来之后又做了一遍,不知道有没有考虑不足的地方,大佬们帮我看看,感谢题目描述: 小明最近学会了快捷键Ctrl C、Ctrl V。具体来说,给她一个字符串,她复制其中的一个字符并将其粘贴到这个字符的下一位,从而整个字符串的长度加一。小树来检测她的学习成果。他给出两个字符串 s、t,小明可以对 s 进行任意次复制粘贴操作,请问她能否将 s 转化成 t? 输入描述 本题采用多组数据测试,第一行为数据组数T。在接下来的每组数据中(1<=T<=100)第一行有一个非空字符串 s,第二行有一个非空字符串 t 。字符串中均为小写字母,所有测试数据的 s 的长度之和与 t 的长度之和都不超过106。 输出描述 对于每组数据输出一行,如果可以转化输出YES,否则输出NO。 样例输入 4 hello hello hello helloo hello hlllloo hello helo 样例输出 YES YES NO NO import java.util.*;public class Main{    public static void main(String args[]){        Solution solution = new Solution();        Scanner sc = new Scanner(System.in);        int num = sc.nextInt();        String[] s = new String[num];        String[] t = new String[num];        for(int i = 0;i<num;i++){            s[i] = sc.next();            t[i]= sc.next();        }        for (int i = 0;i<num;i++){            System.out.println(solution.fun(s[i],t[i]));        }    }}class Solution{    public String fun(String s,String t){        //如果第一个字符串比第二个长返回NO        if(s.length()>t.length()){            return "NO";        }        //如果两个字符串相等返回YES        if(s.equals(t)){            return "YES";        }        //首先判断如果第一位都不相等,那么通过复制肯定不会相同直接返回NO        if (s.charAt(0)!=t.charAt(0)){            return "NO";        }        //指针1指向字符串1        int slow = 1;        //指针2指向字符串2        int fast = 1;        //遍历字符串2        //abc        //aaabc        while(fast<t.length()){//这边不能使用for循环,因为fast指针不一定每次都加一,所以如果采用for循环,会导致没遍历完字符串循环就结束了            //如果s[slow]等于t[fast],两个都往后移一位            if (s.charAt(slow)==t.charAt(fast)){                //如果第一个已经移到头那么slow就不能继续++,slow应该固定为s.length()-1                if (slow>=(s.length()-1)){                    slow = s.length()-1;                }else{                    slow++;                }                fast++;            }else if(s.charAt(slow)!=t.charAt(fast)&&s.charAt(slow-1)==t.charAt(fast)){ //如果s中当前字符不等于t当前字符,但是s当前字符前一位等于t当前字符,                //那么将slow-1                slow--;            }else {//如果走到这里说明s当前字符不等于t当前字符,并且前一个字符也不等于t当前字符,那么便无法通过复制使得s与t相同,返回NO                //abcab                //aabbccaabbcc                return "NO";            }        }        return "YES";    }}
点赞 3
评论 1
全部评论

相关推荐

星辰再现:裁员给校招生腾地方
点赞 评论 收藏
分享
写不来代码的小黑:这么小的城市能有做it的公司也不容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务