代码以查找对所有输入均无效的最长的带有唯一K字符的子字符串

代码以查找对所有输入均无效的最长的带有唯一K字符的子字符串,第1张

代码以查找对所有输入均无效的最长的带有唯一K字符的子字符串

您的实现无法按预期方式运行,因为原始的python解决方案存在错误。我对您的代码做了一些修改。希望现在还好:

public class SubStringWithKUniqueCharacters {    public static void main(String[] args){        System.out.println(longestSubStringWithUniqueK("aabbcdeeeeggi", 3));        System.out.println(longestSubStringWithUniqueK("aabbcdeeeeggi", 2));    }    public static String longestSubStringWithUniqueK(String input, int k){        int len = input.length();        Set<Character> unique = new HashSet<>();        int i = 0;        int j = 0;        int count = 0;        int maxStartIndex = 0;        int maxEndIndex  = 0;        int maxLen = 0;        char[] inputArr = input.toCharArray();        while (i<len){ if (count==k && j -i > maxLen){     maxStartIndex = i;     maxEndIndex = j;     maxLen = maxEndIndex - maxStartIndex; } // 1. if we reach the end of the string, we're done. if (j + 1 > len){     break; } // 2. changed to count <= k here else if (count<= k && j<len){     if (unique.add(inputArr[j])){         count++;     }     j++; } else {         if (unique.remove(inputArr[i])){         // 3. remove all consecutive chars of the same value         char c = inputArr[i];  // save as temp char         while (inputArr[i] == c)         {  i++;         }         count--;         }      }        }         return input.substring(maxStartIndex,maxEndIndex);    }}

现在的输出是:

deeeeggeeeegg


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5507579.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存