package timu; /**  * @program: test-lrg  * @description: 编程题目  * @author: Arell  * @create: 2019-12-24 09:09  **/ public class Demo01 {     public static void main(String[] args) {         /*作者:Mono_Chrome         链接:https://www.nowcoder.com/discuss/357566         来源:牛客网         给定m个不重复的字符 [a, b, c, d],以及一个长度为n的字符串tbcacbdata,问能否在这个字符串中找到一个长度为m的连续子串,         使得这个子串刚好由上面m个字符组成,顺序无所谓,返回任意满足条件的一个子串的起始位置,未找到返回-1。比如上面这个例子,acbd,3。         这道题是leetcode原题吗?求解题思路*/         //Scanner scanner = new Scanner(System.in);         char[] chars = {'a', 'b', 'c', 'd'};         String s = "gsjkdgabdc";         int m = chars.length;         int n = s.length();         //将字符拼接字符串         StringBuilder charStr = new StringBuilder();         for (int i = 0; i < chars.length; i++) {             charStr.append(chars[i]);         }         //遍历字符串,判断         String[] strArr = s.split("");         int index = 0;         for (int i = 0; i < strArr.length; i++) {             boolean flag = true;             if (charStr.toString().contains(strArr[i]) && i + m <= n ) {                 String temp = s.substring(i, i + m);                 for (char aChar : chars) {                     if (!temp.contains(aChar + "")) {                         //只要有不包含的,就false                         flag = false;                     }                 }             }else {                 flag = false;             }             if (flag) {                 //找到了第一个满足条件的,返回并return                 index = i;                 System.out.println(index);                 return;             } else {                 index = -1;             }         }         System.out.println(index);     } }

相关推荐

Yki_:以下条件优先录用: 喜欢去缅北当猪仔的
点赞 评论 收藏
分享
牛客网
牛客企业服务