Skip to content

Feat: added content to Lesson13.java - James Capparell #439

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 9 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
package com.codedifferently.lesson13;

import java.util.HashMap;

public class Lesson13 {

/**
* Provide the solution to LeetCode 3146 here:
* https://leetcode.com/problems/permutation-difference-between-two-strings
*/
public int findPermutationDifference(String s, String t) {
return 0;
HashMap<Character, Integer> stringS = new HashMap<>();
HashMap<Character, Integer> stringT = new HashMap<>();
int diffSum = 0;
for (int i = 0; i < t.length(); i++) {
stringS.put(s.charAt(i), i);
stringT.put(t.charAt(i), i);
}
for (Character key : stringS.keySet()) {
int value1 = stringS.get(key);
int value2 = stringT.get(key);
int difference = Math.abs(value1 - value2);
diffSum += difference;
}
return diffSum;
}
}
23 changes: 17 additions & 6 deletions lesson_13/maps_ts/src/lesson13.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,18 @@
/**
* Provide the solution to LeetCode 3146 here:
* https://leetcode.com/problems/permutation-difference-between-two-strings
*/
export function findPermutationDifference(s: string, t: string): number {
return 0;
}
const stringS = new Map<string, number>();
const stringT = new Map<string, number>();
let diffSum = 0;
for (let i = 0; i < t.length; i++) {
stringS.set(s.charAt(i), i);
stringT.set(t.charAt(i), i);
}
for (const key of stringS.keys()) {
if (stringT.has(key)) {
const value1 = stringS.get(key)!; // Non-null assertion because we checked with has()

Check failure on line 11 in lesson_13/maps_ts/src/lesson13.ts

View workflow job for this annotation

GitHub Actions / build

Forbidden non-null assertion
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The error is saying you can't use ! and instead need to do something different. The documentation for the error (https://typescript-eslint.io/rules/no-non-null-assertion/) gives you an example of what you can do instead.

Re-writing as stringS.get(key) ?? -1 would work perfectly fine.

Unfortunately, the TypeScript compiler isn't smart enough yet to figure out that the has check you did on line 10 means that the check on line 11 is safe. There's probably an open feature request for this.

const value2 = stringT.get(key)!; // Non-null assertion

Check failure on line 12 in lesson_13/maps_ts/src/lesson13.ts

View workflow job for this annotation

GitHub Actions / build

Forbidden non-null assertion
const difference = Math.abs(value1 - value2);
diffSum += difference;
}
}
return diffSum;
}
Loading