DEV Community

Cover image for Codewars: Isogram Problem
CLeeBenjamin
CLeeBenjamin

Posted on

Codewars: Isogram Problem

This problem on codewars ask the following:

An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case.

Example: (Input --> Output)

isIsogram "Dermatoglyphics" = true isIsogram "moose" = false isIsogram "aba" = false 
Enter fullscreen mode Exit fullscreen mode

How to approach it with PEDAC method:

P: Understand the problem -
Understand that isogram is a string that has no letter that repeats.

E: Give Example -
Creating your own example would be:
"apple" = false
"ted" = true
As I check each letter, I will need to place characters that were visited in a data structure.

D: What data structure(s) would be need -
What will I use to hold data if necessary:
Object

A: Steps to solve it without language specific information -

  • make string lowercase
  • check if string is empty and return true if so
  • loop through string
  • place item in data structure when visited
  • check if the character appears more than once in visited data structure, if it has return false
  • if looping finishes without returning, return true

C: The final code using the psuedocode (A) to guid me -

- make string lowercase

function isIsogram(str){ let newStr = str.toLowerCase(); /// here } 
Enter fullscreen mode Exit fullscreen mode

- check if string is empty and return true if so

function isIsogram(str){ let newStr = str.toLowerCase(); if(newStr === ""){ /// here return true; /// here } } 
Enter fullscreen mode Exit fullscreen mode

- loop through string

function isIsogram(str){ let newStr = str.toLowerCase(); if(newStr === ""){ return true; } for(let char of newStr){ /// here /* loop through the string */ } } 
Enter fullscreen mode Exit fullscreen mode

- place item in data structure when visited

function isIsogram(str){ let visited = {}; /// here let newStr = str.toLowerCase(); if(newStr === ""){ return true; } for(let char of newStr){ if(!visited[char]){ /// here visited[char] = 1 /// here } } 
Enter fullscreen mode Exit fullscreen mode

- check if the character appears more than once in visited data structure, if it has return false

function isIsogram(str){ let visited = {}; let newStr = str.toLowerCase(); if(newStr === ""){ return true; } for(let char of newStr){ if(!visited[char]){ visited[char] = 1 }else { /// here return false /// here } } } 
Enter fullscreen mode Exit fullscreen mode

- if looping finishes without terminating the function, return true

 function isIsogram(str){ let visited = {}; let newStr = str.toLowerCase(); if(newStr === ""){ return true; } for(let char of newStr){ if(!visited[char]){ visited[char] = 1 }else { return false } } return true; /// here } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)