Подсчет строк, имеющих сумму значений символов ASCII, равную простому числу или числу Армстронга.
Учитывая массив arr[] размера N , содержащий строки, задача состоит в том, чтобы подсчитать количество строк, имеющих сумму значений ASCII символов, равную числу Армстронга или простому числу.
Примеры:
Input: arr[] = {“hello”, “nace”}
Output:
Number of Armstrong Strings are: 1
Number of Prime Strings are: 0
Explanation: Sum of ASCII values of characters of each string is: {532, 407}, out of which 407 is an Armstrong Number, and none of them is a Prime Number.
Hence, the armstrong valued string is “nace”.Input: arr[] = {“geeksforgeeks”, “a”, “computer”, “science”, “portal”, “for”, “geeks”}
Output:
Number of Armstrong Strings are: 0
Number of Prime Strings are: 2
Explanation: Sum of ASCII values of characters of each string is: {1381, 97, 879, 730, 658, 327, 527}, out of which 1381 and 97 are Prime Numbers, and none of them is an Armstrong Number.
Hence, prime valued strings are “geeksforgeeks” and “a”.
Подход: Эту проблему можно решить путем вычисления значения ASCII каждой строки. Выполните следующие шаги, чтобы решить эту проблему:
- Инициализируйте две переменные, countPrime и countArmstrong как 0 , чтобы сохранить количество строк со значениями Prime и Armstrong.
- Переберите диапазон индексов [0, N – 1] , используя переменную, скажем i , и выполните следующие шаги:
- Сохраните сумму значений ASCII символов текущей строки arr[i] в переменной, скажем, val .
- Если число val является числом Армстронга, увеличьте countArmstrong на 1 .
- Если число val является простым числом, увеличьте countPrime на 1 .
- В качестве результата выведите значения countPrime и countArmstrong .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O(N*M), где M — длина самой длинной строки в массиве arr[]
Вспомогательное пространство: O(1)