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