Подсчет строк, имеющих сумму значений символов ASCII, равную простому числу или числу Армстронга.

Опубликовано: 22 Сентября, 2022

Учитывая массив 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)