Skip to content

Commit

Permalink
Add new hash table exercise
Browse files Browse the repository at this point in the history
  • Loading branch information
joffilyfe committed Jan 5, 2024
1 parent fea9f19 commit c96bda4
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 0 deletions.
41 changes: 41 additions & 0 deletions golang/1165.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package golang

import "math"

/*
There is a special keyboard with all keys in a single row.
Given a string keyboard of length 26 indicating the layout of the keyboard (indexed from 0 to 25). Initially, your finger is at index 0. To type a character, you have to move your finger to the index of the desired character. The time taken to move your finger from index i to index j is |i - j|.
You want to type a string word. Write a function to calculate how much time it takes to type it with one finger.
Example 1:
Input: keyboard = "abcdefghijklmnopqrstuvwxyz", word = "cba"
Output: 4
Explanation: The index moves from 0 to 2 to write 'c' then to 1 to write 'b' then to 0 again to write 'a'.
Total time = 2 + 1 + 1 = 4.
Example 2:
Input: keyboard = "pqrstuvwxyzabcdefghijklmno", word = "leetcode"
Output: 73
*/

func calculateTime(keyboard string, word string) int {
m := make(map[rune]float64)
count := 0.0
pointer := 0.0

for i, ww := range keyboard {
m[ww] = float64(i)
}

for _, w := range word {
count += math.Abs(pointer - m[w])
pointer = m[w]
}

return int(count)
}
15 changes: 15 additions & 0 deletions golang/1165_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package golang

import "testing"

func TestFirstCalculateTime(t *testing.T) {

keyboard := "abcdefghijklmnopqrstuvwxyz"
word := "cba"
result := calculateTime(keyboard, word)
expected := 4

if result != expected {
t.Errorf(`Expected %v but received %v`, expected, result)
}
}
1 change: 1 addition & 0 deletions golang/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
| -------------- | ------------------------------ | ------------------------------------------------------------------------------------ |
| 2.go | Linked List | https://leetcode.com/problems/add-two-numbers/ |
| 888.go | Hash table | https://leetcode.com/problems/fair-candy-swap |
| 1165.go | Hash table | https://leetcode.com/problems/single-row-keyboard/ |
| 1290.go | Linked List / Bit manipulation | https://leetcode.com/problems/convert-binary-number-in-a-linked-list-to-integer |
| 1539.go | Binary Search | https://leetcode.com/problems/kth-missing-positive-number/ |
| 1608.go | Binary Search | https://leetcode.com/problems/special-array-with-x-elements-greater-than-or-equal-x/ |

0 comments on commit c96bda4

Please sign in to comment.