Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าความถี่ของอักขระทั้งหมดในสตริงเป็นจำนวนเฉพาะหรือไม่ใน Python


สมมติว่าเรามีสตริง s เราต้องตรวจสอบว่าการปรากฎของอักขระแต่ละตัวใน s เป็นจำนวนเฉพาะหรือไม่

ดังนั้น หากอินพุตเป็นเหมือน s ="apuuppa" ผลลัพธ์จะเป็น True เนื่องจากมีสองตัว 'a' สามตัว และ 'p' สองตัว

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • freq :=แผนที่ที่มีอักขระทั้งหมดและความถี่
  • สำหรับอักขระแต่ละตัวในความถี่ ให้ทำ
    • ถ้า freq[char]> 0 และ freq[char] ไม่ใช่จำนวนเฉพาะ ดังนั้น
      • คืนค่าเท็จ
  • คืนค่า True

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

โค้ดตัวอย่าง

from collections import defaultdict

def isPrime(num):
   if num > 1:
      for i in range(2, num):
         if num % i == 0:
           return False
      return True
   return False
   
def solve(s):
   freq = defaultdict(int)
 
   for i in range(len(s)):
      freq[s[i]] += 1
           
   for char in freq:
      if freq[char] > 0 and isPrime(freq[char]) == False:
         return False
 
   return True

s = "apuuppa"
print(solve(s))

อินพุต

"apuuppa"

ผลลัพธ์

True