hackerrank java子字符串比较错误

hackerrank java子字符串比较错误,java,Java,您的输出(标准输出): 预期产出: com wel 这是因为这个循环: ava wel 尝试此操作以获取最后3个字符串: for (int i = 0; i < s.length() - k + 1; i++) { 请遵循此代码 largest = s.substring(s.length -3); 公共静态字符串getSmallestAndLargest(字符串s,int k){ 字符串最小=”; 字符串最大=”; char[]strArr=s.toCharArray(); i

您的输出(标准输出):

预期产出:

com
wel

这是因为这个循环:

ava
wel

尝试此操作以获取最后3个字符串:

for (int i = 0; i < s.length() - k + 1; i++) {
请遵循此代码

largest = s.substring(s.length -3); 
公共静态字符串getSmallestAndLargest(字符串s,int k){
字符串最小=”;
字符串最大=”;
char[]strArr=s.toCharArray();
int size=strArr.length;
char smallestChar=最小字母表(strArr,大小);
char largestChar=最大字母表(strArr,大小);
String[]smallestCharStringSet=prepareSetOfString(s,k,smallestChar);
String[]largestCharStringSet=prepareSetOfString(s,k,largestChar);
最小=smallestString(smallestCharStringSet);
最大=最大字符串(最大字符串集);
返回最小值+“\n”+最大值;
}
公共静态字符串[]PrepareSetoString(字符串s、整数k、字符c){
int count=getCharCount(s,c);
String[]possibleStringCollection=新字符串[计数];
字符串操作字符串=s;
possibleStringCollection[0]=操作字符串;
for(int i=0;ifor(int i=0;i<s.length()-k;i++){
for (int i = 0; i < s.length() - k + 1; i++) {
largest = s.substring(s.length -3); 
 public static String getSmallestAndLargest(String s, int k) {
        String smallest = "";
        String largest = "";

        char[] strArr = s.toCharArray();
        int size = strArr.length;

        char smallestChar = smallest_alphabet(strArr, size);
        char largestChar  = largest_alphabet(strArr, size);

        String[] smallestCharStringSet =  prepareSetOfString(s, k, smallestChar);
        String[] largestCharStringSet = prepareSetOfString(s, k, largestChar);

        smallest = smallestString(smallestCharStringSet);
        largest = largestString(largestCharStringSet);
        return smallest + "\n" + largest;
    }

    public static String[] prepareSetOfString(String s, int k, char c){
        int count = getCharCount(s,c);

        String[] possibleStringCollection  = new String[count];
        String operationString = s;
        possibleStringCollection[0] = operationString;
        for(int i=0; i< count; i++){
            int indexOfChar = operationString.indexOf(c+"");
            if(indexOfChar+k <= operationString.length()){
                possibleStringCollection[i] = operationString.substring(indexOfChar, indexOfChar+k);
                    operationString = operationString.substring(operationString.indexOf(c+"")+1);
            }
        }

        return possibleStringCollection;
    }

    public static String smallestString(String[] smallestCharStringSet){
        String smallestString = smallestCharStringSet[0];
        for(int i = 0; i < smallestCharStringSet.length; i++){
            if(smallestCharStringSet[i] != null)
                if(smallestString.compareTo(smallestCharStringSet[i]) > 0)
                {
                    smallestString = smallestCharStringSet[i];
                }
        }
        return smallestString;
    }

    public static String largestString(String[] largestCharStringSet){
        String largestString = largestCharStringSet[0];
        for(int i = 0; i < largestCharStringSet.length; i++){
            if(largestCharStringSet[i] != null)
                if(largestString.compareTo(largestCharStringSet[i]) < 0)
                {
                    largestString = largestCharStringSet[i];
                }
        }
        return largestString;
    }

    public static int getCharCount(String s, char c)
    {
        int count = 0;
        for(int i = 0; i < s.length(); i++)
        {
            if(s.charAt(i) == c)
                count++;
        }
        return count;
    }

    public static char largest_alphabet(char a[], int n)
    {
        char max = 'A';

        for (int i=0; i<n; i++)
            if (a[i] > max)
                max = a[i];

        return max;
    }

    public static char smallest_alphabet(char a[], int n)
    {
        char min = 'z';

        for (int i=0; i<n-1; i++)
            if (a[i] < min)
                min = a[i];

        return min;
    }