From 5ec47efc7da1b5e0313b1808d5dfcf43822ad6d3 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Fri, 4 Apr 2025 20:06:00 +0100 Subject: [PATCH 1/8] add new file for strings and change last problem of strings --- .../main/java/com/github/contest/Execute.kt | 26 ++++++++++++++++++- .../strings/StringsAlternativeSolution.kt | 2 ++ .../github/contest/strings/StringsLeetcode.kt | 16 +++++++++--- .../contest/strings/StringsProdVariant.kt | 2 ++ 4 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 contest/src/main/java/com/github/contest/strings/StringsAlternativeSolution.kt create mode 100644 contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 23b2a76a..32d1f7b8 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -12,7 +12,31 @@ import java.util.TreeMap fun main() { - shiftingLetters("abc", intArrayOf(3, 5, 9)).also { println(it) } + shiftingLetters( + "mkgfzkkuxownxvfvxasy", + intArrayOf( + 505870226, + 437526072, + 266740649, + 224336793, + 532917782, + 311122363, + 567754492, + 595798950, + 81520022, + 684110326, + 137742843, + 275267355, + 856903962, + 148291585, + 919054234, + 467541837, + 622939912, + 116899933, + 983296461, + 536563513 + ) + ).also { println(it) } } fun testing() { diff --git a/contest/src/main/java/com/github/contest/strings/StringsAlternativeSolution.kt b/contest/src/main/java/com/github/contest/strings/StringsAlternativeSolution.kt new file mode 100644 index 00000000..f9382ac4 --- /dev/null +++ b/contest/src/main/java/com/github/contest/strings/StringsAlternativeSolution.kt @@ -0,0 +1,2 @@ +package com.github.contest.strings + diff --git a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt index bbba6e3a..46c2e8c3 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt @@ -5,13 +5,18 @@ package com.github.contest.strings */ fun shiftingLetters(str: String, shifts: IntArray): String { - val shifting = IntArray(shifts.size) - var sum = shifts.sum() + val shifting = LongArray(shifts.size) + var sum = 0L var res = "" + for (element in shifts) { + val num = element.toLong() + sum += num + } + for (i in shifting.indices) { shifting[i] = sum - sum -= shifts[i] + sum -= shifts[i].toLong() } for (i in str.indices) { @@ -23,13 +28,16 @@ fun shiftingLetters(str: String, shifts: IntArray): String { return res } -private fun shiftLetter(char: Char, shift: Int): Char = when { +private fun shiftLetter(char: Char, shift: Long): Char = when { char in 'a'..'z' -> { val base = 'a'.code val offset = char.code - base val shifted = (offset + shift) % 26 (base + shifted).toChar() } + else -> char } + + diff --git a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt new file mode 100644 index 00000000..f9382ac4 --- /dev/null +++ b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt @@ -0,0 +1,2 @@ +package com.github.contest.strings + From 16f188197034ea96328f93e42413d8493c4d9bb1 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 08:25:05 +0100 Subject: [PATCH 2/8] add prod variant 848 --- .../contest/strings/StringsProdVariant.kt | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt index f9382ac4..053d0c52 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt @@ -1,2 +1,36 @@ package com.github.contest.strings +/** + * 848. Shifting Letters + */ + +fun shiftingLetterProdVariant(str: String, shifts: IntArray): String { + var sum = shifts.toLongArray().sum() + return buildString { + str.forEachIndexed { index, letter -> + val new = letter.shiftLetter(sum) + append(new) + sum -= shifts[index] + } + } +} + +private fun IntArray.toLongArray(): LongArray { + val new = LongArray(this.size) + for (i in indices) { + new[i] = this[i].toLong() + } + + return new +} + +private fun Char.shiftLetter(shift: Long): Char = when { + this in 'a'..'z' -> { + val base = 'a'.code + val offset = this.code - base + val shifted = (offset + shift) % 26 + (base + shifted).toChar() + } + + else -> this +} \ No newline at end of file From 24a01b6f570b65a372df4628c8e0c1a7f044b7d1 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 08:26:04 +0100 Subject: [PATCH 3/8] small change --- .../main/java/com/github/contest/strings/StringsProdVariant.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt index 053d0c52..768903e5 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt @@ -2,6 +2,7 @@ package com.github.contest.strings /** * 848. Shifting Letters + * Prod Variant */ fun shiftingLetterProdVariant(str: String, shifts: IntArray): String { From 14cf3f6994110281d91b3ecdc97f7c6aee5c12d6 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 09:49:43 +0100 Subject: [PATCH 4/8] add 2734 --- .../github/contest/strings/StringsLeetcode.kt | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt index 46c2e8c3..2706ca90 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt @@ -39,5 +39,44 @@ private fun shiftLetter(char: Char, shift: Long): Char = when { else -> char } +/** + * 2734. Lexicographically Smallest String After Substring Operation + */ + +fun smallestString(s: String): String { + if (s.hasSingle()) return when { + s[0] == 'a' -> 'z'.toString() + else -> Char(s[0].code - 1).toString() + } + val chars = s.toCharArray() + val n = chars.size + var start = -1 + + for (i in 0 until n) { + if (chars[i] != 'a') { + start = i + break + } + } + + if (start == -1) { + chars[n - 1] = 'z' + return String(chars) + } + + for (i in start until n) { + if (chars[i] != 'a') chars[i]-- + else break + } + + return String(chars) + +} + +fun String.hasSingle(): Boolean = when { + this.length == 1 -> true + else -> false +} + From 13642b681048cbc801277cd297c621e5ec536204 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 10:23:41 +0100 Subject: [PATCH 5/8] add 2734 prod variant --- .../main/java/com/github/contest/Execute.kt | 27 ++----------------- .../contest/strings/StringsProdVariant.kt | 24 +++++++++++++++++ 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 32d1f7b8..4f3daf4b 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -2,6 +2,7 @@ package com.github.contest import com.github.contest.strings.shiftingLetters +import com.github.contest.strings.smallestStringProdVariant import java.util.TreeMap @@ -12,31 +13,7 @@ import java.util.TreeMap fun main() { - shiftingLetters( - "mkgfzkkuxownxvfvxasy", - intArrayOf( - 505870226, - 437526072, - 266740649, - 224336793, - 532917782, - 311122363, - 567754492, - 595798950, - 81520022, - 684110326, - 137742843, - 275267355, - 856903962, - 148291585, - 919054234, - 467541837, - 622939912, - 116899933, - 983296461, - 536563513 - ) - ).also { println(it) } + smallestStringProdVariant("acbcbabc").also { println(it) } } fun testing() { diff --git a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt index 768903e5..f94a8152 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsProdVariant.kt @@ -34,4 +34,28 @@ private fun Char.shiftLetter(shift: Long): Char = when { } else -> this +} + +/** + * 2734. Lexicographically Smallest String After Substring Operation + * Prod Variant + */ + +fun smallestStringProdVariant(s: String): String { + val firstNonAIndex = s.indexOfFirst { it != 'a' } + + return if (firstNonAIndex == -1) { + s.dropLast(1) + 'z' + } else { + val modifiedChars = s.toCharArray().also { chars -> + for (i in firstNonAIndex until chars.size) { + if (chars[i] != 'a') { + chars[i]-- + } else { + break + } + } + } + String(modifiedChars) + } } \ No newline at end of file From f80280d46fdf2d84681331daeb89d1a7fcd08ad2 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 10:45:51 +0100 Subject: [PATCH 6/8] add 1863 --- .../main/java/com/github/contest/Execute.kt | 3 ++- .../BitManipulationLeetcode.kt | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/contest/src/main/java/com/github/contest/Execute.kt b/contest/src/main/java/com/github/contest/Execute.kt index 4f3daf4b..fd25f043 100644 --- a/contest/src/main/java/com/github/contest/Execute.kt +++ b/contest/src/main/java/com/github/contest/Execute.kt @@ -1,6 +1,7 @@ package com.github.contest +import com.github.contest.bitManipulation.subsetXORSum import com.github.contest.strings.shiftingLetters import com.github.contest.strings.smallestStringProdVariant @@ -13,7 +14,7 @@ import java.util.TreeMap fun main() { - smallestStringProdVariant("acbcbabc").also { println(it) } + subsetXORSum(intArrayOf(5, 1, 6)) } fun testing() { diff --git a/contest/src/main/java/com/github/contest/bitManipulation/BitManipulationLeetcode.kt b/contest/src/main/java/com/github/contest/bitManipulation/BitManipulationLeetcode.kt index 11c0275f..e3a63857 100644 --- a/contest/src/main/java/com/github/contest/bitManipulation/BitManipulationLeetcode.kt +++ b/contest/src/main/java/com/github/contest/bitManipulation/BitManipulationLeetcode.kt @@ -1,2 +1,25 @@ package com.github.contest.bitManipulation +/** + * 1863. Sum of All Subset XOR Totals + */ + +fun subsetXORSum(nums: IntArray): Int { + var totalXORSum = 0 + + fun calculateSubsetXOR(index: Int, currentXOR: Int) { + if (index == nums.size) { + totalXORSum += currentXOR + return + } + + // Include the current element + calculateSubsetXOR(index + 1, currentXOR xor nums[index]) + + // Exclude the current element + calculateSubsetXOR(index + 1, currentXOR) + } + + calculateSubsetXOR(0, 0) + return totalXORSum +} \ No newline at end of file From f63e2c52ccbfc6ac4c9bbd00dca3d5c3d050cf38 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 11:39:01 +0100 Subject: [PATCH 7/8] add 2351 --- .../github/contest/hashTable/HashTableLeetcode.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt index 6556bc79..aaf90379 100644 --- a/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt +++ b/contest/src/main/java/com/github/contest/hashTable/HashTableLeetcode.kt @@ -256,4 +256,19 @@ fun findMissingAndRepeatedValues(grid: Array): IntArray { } return res +} + +/** + * 2351. First Letter to Appear Twice + */ + +fun repeatedCharacter(s: String): Char { + val alphabet = IntArray(26) + for (char in s) { + val index = char - 'a' + if (alphabet[index] == 0) alphabet[index] += 1 + else return char + } + + return 'a' } \ No newline at end of file From 6a0223f989ac334bf197a79060074b8c8e9923d1 Mon Sep 17 00:00:00 2001 From: Ashwagandha-coder Date: Sat, 5 Apr 2025 11:48:38 +0100 Subject: [PATCH 8/8] add 2278 --- .../java/com/github/contest/strings/StringsLeetcode.kt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt index 2706ca90..c3f38ce1 100644 --- a/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt +++ b/contest/src/main/java/com/github/contest/strings/StringsLeetcode.kt @@ -78,5 +78,15 @@ fun String.hasSingle(): Boolean = when { else -> false } +/** + * 2278. Percentage of Letter in String + */ + +fun percentageLetter(s: String, letter: Char): Int { + var count = 0 + for (char in s) if (char == letter) count++ + return if (count == 0) 0 else (count * 100) / s.length +} +