Java切割字符串对

Java切割字符串对,java,string,algorithm,hashmap,Java,String,Algorithm,Hashmap,这里我有一个3200个字符的字符串,我必须找到它们之间空间最大的一对,我已经有了找到这对字符的代码,但是我必须删除这对字符的第一个字符,并将第二个字符移到字符串的末尾,这样做直到不可能这样做。这是我到目前为止所做的 import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class StringPairs { public static void main(String[] arg

这里我有一个3200个字符的字符串,我必须找到它们之间空间最大的一对,我已经有了找到这对字符的代码,但是我必须删除这对字符的第一个字符,并将第二个字符移到字符串的末尾,这样做直到不可能这样做。这是我到目前为止所做的

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class StringPairs {
    public static void main(String[] args) {
        String inputString = readInputString();
        printIdenticalSymbols(inputString);
    }

    private static String readInputString() {
        Scanner in = new Scanner(System.in);
        String inputString = in.nextLine();
        in.close();
        return inputString;
    }


    private static void printIdenticalSymbols(String inputString) {
        Map<Character, Integer> symbolsMap = new HashMap<Character, Integer>();
        char longestChar = ' ';
        int longestDiff = -1;
        int firstIndex = -1;
        int lastIndex = -1;
        int firstOccurenceOfLastIdentical = -1;
        for (int i = 0; i < inputString.length(); i++) {
            char currentCharacter = inputString.charAt(i);
            if (!symbolsMap.containsKey(currentCharacter)) {
                symbolsMap.put(currentCharacter, i);
                continue;
            }

            int firstOccurenceIndex = symbolsMap.get(currentCharacter);
            if (firstOccurenceIndex < firstOccurenceOfLastIdentical) {
                symbolsMap.put(currentCharacter, i);
                continue;
            }

            int currentIdenticalLength = i - firstOccurenceIndex;
            if (currentIdenticalLength > longestDiff) {
                longestChar = currentCharacter;
                longestDiff = currentIdenticalLength;
                firstIndex = firstOccurenceIndex;
                lastIndex = i;
            } 

            firstOccurenceOfLastIdentical = firstOccurenceIndex;
            symbolsMap.put(currentCharacter, i);

        }
        System.out.println(longestChar + " - " + firstIndex + ":" + lastIndex);
    }
}

输出:b:它们之间的空格(它已经这样做了)和rtab如果字符串更大,请执行此操作,直到无法执行为止。

我怀疑这看起来像是家庭作业

无论如何,您应该研究字符串操作函数,特别是String.substring(begin,end)。要创建循环,请查看while循环。请注意,您尚未处理没有配对的情况

尽管如此,我不理解测试的功能:
(FirstOccurrenceIndex请向我们显示示例输入和预期输出。@添加了LastMind Done编辑
brtba