Нахождение показателя степени строки - PullRequest
0 голосов
/ 30 октября 2019

Я получил эту проблему в моем тесте компетенции программирования. Мне нужно найти показатель строки.

Для напр .:

  • Вход Str = "pctpctpct", выход: pct 3.
  • Вход str : "pressure", вывод 0. Потому что давление не повторяется как строка.

То есть строка pct повторяется 3 раза. Мне нужно создать метод для этого. Я попробовал все, но не получилось. Мой метод был:

public static int findExponent(String str) {
    int count = 0;
    String subs = "";
    ArrayList<String> al = new ArrayList<String>();
    for (int i = 0; i < str.length() / 2; i++) {
        for (int j = i + 1; j <= str.length() / 2; j++) {
            subs = str.substring(i, j);
            al.add(subs);
            System.out.println(al);
            for (String x : al)
                for (int k = 0; k < str.length(); k++) {
                    if (str.contains(x)) {
                        count++;
                    }
                }
        }
    }
    return count;
}

Здесь я проверял, совпадает ли какая-либо подстрока с шаблоном String. Но это не дает мне правильный вывод. Какие изменения мне нужно сделать в этом?

Как проверить шаблон для такого типа вопроса, где мы должны создать шаблон и проверить, повторяется ли он?

Ответы [ 2 ]

0 голосов
/ 30 октября 2019

Как насчет этого. Я хотел бы продолжить с алгоритмом, основанным на Java: -

Lets assume the input is the string
convert it to character sequence (array of char)
Sort the array into a temp array
loop from 0 to array length
count the ith letter repetition
if its 0
    return 0;
else 
    if count for all word matches
        return count; 

сложность 0 (n), и этот код будет работать

0 голосов
/ 30 октября 2019

Вы можете попытаться одновременно прочитать символы с начала строки и с конца строки, пока начальная последовательность не совпадет с обратной последовательностью конца. Теперь, когда у вас есть повторяющаяся последовательность, просмотрите строку, убедитесь, что она совпадает последовательно, и вычислите ее показатель степени;в противном случае верните 0.

...