0
그래서 여기에는 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);
}
}
예를 입력 :
brtba
출력 : B는 : 그들 사이의 공간 (이미이 작업을 수행) 및 rtab 문자열이 더 큰 경우가 될 때까지이 일을 그렇게 할 수는 없습니다.
샘플 입력 및 예상 출력을 보여주십시오. – TheLostMind
@ TheLostMind 완료 수정 추가됨 –