【问题标题】:Java cutting string pairsJava 切割字符串对
【发布时间】:2014-09-08 17:32:08
【问题描述】:

所以在这里我有一个包含 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 完成编辑添加

标签: java string algorithm hashmap


【解决方案1】:

对我来说,这看起来像是家庭作业。

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

话虽如此,我不明白测试的功能: (firstOccurenceIndex

【讨论】:

    猜你喜欢
    • 2014-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多