网易2017内推笔试题(藏宝图)java解法

题目描述:
牛牛拿到了一个藏宝图,顺着藏宝图的指示,牛牛发现了一个藏宝盒, 藏宝盒上有一个机关, 机关每次会显示两个字符串s和t, 根据古老的传说,牛牛每次都回答t是否是s的子序列。注意,子序列不要求在原字符串中是连续的, 例如串abc, 它的子序列就有{空串,a,b,c,ab,ac,bc,abc}8种。

输入描述:
每个输入包含一个测试用例,每个测试用例包含两行长度不超过10的不包含空格的可见ASCII字符串。

输出描述:
输出一行”Yes”或者”No”表示结果。

输入例子:
group.jobbole.com
ooo

输出例子:
Yes

方法实现
思路:把s和t分别转成字符数组sc[]、tc[],用i、j分别表示sc和tc的下标。将sc的下标i每后移一位指向的当前元素sc[i]和当前tc的元素tc[j]进行比较,如果sc[i]==tc[j],则j++。当i已经指向sc的最后一个元素,而j还没指向tc的最后一个元素时,匹配失败,输出”No”。反之,匹配成功,输出”Yes”。关键代码如下:

public  String matchString(String s,String t){
        char[] sc=new char[s.length()];
        sc=s.toCharArray();//把字符串转成字符数组
        char[] tc=new char[t.length()];
        tc=t.toCharArray();
        int i=0;//sc下标
        int j=0;//tc下标
        while(i<sc.length&&j<tc.length){
            if(sc[i]==tc[j]){
                j++;
            }
            i++;
        }
        if(j==tc.length){
            return "yes";
        }
        return "no";
     }

猜你喜欢

转载自blog.csdn.net/lijingyu1997/article/details/66969867
今日推荐